gpt4 book ai didi

javascript - 为什么我不能使用 slice 或 lodash remove 从这个数组中删除项目?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:44:07 26 4
gpt4 key购买 nike

使用切片(在这种情况下,我在数组中找到了正确的项目,尝试切片,但数组保持完全相同):

for (var i=0; i<vm.storedViews.length; i++) {
if (view_id === vm.storedViews[i].id) {
vm.storedViews.slice(i,1);
// vm.storedViews = _.remove(vm.storedViews, i);
break;
}
}

console.log('vm.storedViews',vm.storedViews);

使用 _.remove 所有项目最终都从我的数组中删除:

for (var i=0; i<vm.storedViews.length; i++) {
if (view_id === vm.storedViews[i].id) {
// vm.storedViews.slice(i,1);
vm.storedViews = _.remove(vm.storedViews, i);
break;
}
}

console.log('vm.storedViews',vm.storedViews);

enter image description here

最佳答案

使用.splice() 修改数组。 .slice 只返回选中的元素。

vm.storedViews.splice(i, 1);

_.remove() 不起作用,因为第二个参数不是索引,它是谓词函数——它删除函数返回真值的数组的所有元素.看起来最接近 .splice() 的 lodash 函数是 _.pullAt() .它需要删除一个数组索引列表,因此您可以在只想删除一个元素的情况下使用它:

_.pullAt(vm.storedViews, i);

您可以使用 _.findIndex() 代替您的 for 循环:

_.pullAt(vm.storedViews, _.findIndex(vm.storedViews, 'id', view_id));

如果 ID 是唯一的,您还可以使用:

_.remove(vm.storedViews, 'id', view_id);

关于javascript - 为什么我不能使用 slice 或 lodash remove 从这个数组中删除项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33158786/

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