gpt4 book ai didi

JavaScript 将数组元素移动到数组末尾

转载 作者:行者123 更新时间:2023-12-04 00:03:29 27 4
gpt4 key购买 nike

编辑 - 2 个优雅的解决方案

两个优雅的解决方案,来自 Pranav 和 Bekim。谢谢,都经过测试并完美运行。


     for(var x in data)data[x].name == "other" ? data.push( data.splice(x,1)[0] ) : 0;


   var res = data.slice(),
len = res.length;

for (var i = 0; i < len; i++) {
if (res[i].name == 'other') {
res.push(res.splice(i, 1)[0]);
i--;
len--;
}
}

JS 工具 IM 使用

Angular 1.5.6,lodash 4.1x

这是我有一个按字母顺序排序的对象数组的场景,例如sortedData 下面等等。然而,在该数组中也是catch all Other这显然也是按字母顺序排序的。我想从数组中删除其他,然后移动到数组的末尾,而不会弄乱当前的排序数组。

注意

我目前的方法如下有效,但很丑陋。 JS、angular 或 lodash 有更优雅的东西吗?
var data = [
{id:1,name:'apple'},
{id:2,name:'banana'},
{id:3,name:'other'},
{id:4,name:'tomato'},
{id:5,name:'strawberry'}
];

function move(array, fromIndex, toIndex) {
array.splice(toIndex, 1, array.splice(fromIndex, 1)[0]);
return array;
}

var moved = move(
data,
_.findIndex(data, ['name', 'other']),
Object.keys(data).length
);

理想结果
 var data = [
{id:1,name:'one'},
{id:2,name:'two'},
{id:4,name:'four'},
{id:5,name:'five'}
{id:3,name:'other'},
]

最佳答案

您在纯 Javascript (ES6) 中执行 Array.findIndex,而不使用任何库:

data.push(data.splice(data.findIndex(v => v.name == 'other'), 1)[0])

Array.findIndex is new ,但如今人们实际使用的大多数浏览器都有它。所以你可能可以使用它。 (Edge 支持它,但不支持 IE)。

如果您发现 [0]丑陋,你可以使用 spread 来解压数组(这样它也可以用于多个项目并进行一些更改):
data.push(...data.splice(data.findIndex(v => v.name == 'other'), 1))

关于JavaScript 将数组元素移动到数组末尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37738892/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com