从数组中删除对象的最佳方法是什么
What is the best way to delete objects from Array
我想知道在数组中查找对象的所有索引然后从数组中删除它们的最佳方法是什么。
目前,我的代码如下所示;
var data = _.find(group.value, function(valueItem){ return valueItem.value == filter.value });
var index =_.indexOf(group.value,data);
group.value.splice(index,1);
这很好用,但如果索引不止一次,我只能得到第一个索引。所以,我正在寻找一种方法来获取数组中的所有索引,这样我就可以循环删除所有
使用filter
创建一个新的对象数组。
根据您的示例,此代码根据每个 value
属性 的值(名称)创建新数组。我已将 filter
代码包装在一个函数 (getData
) 中,您可以使用原始数组和要检查的名称作为参数调用该函数。
如果没有匹配项,函数将return一个空数组。
const arr = [
{ id: 1, value: 'bob' },
{ id: 2, value: 'dave' },
{ id: 3, value: 'bob' },
{ id: 4, value: 'bob' }
];
function getData(arr, name) {
return arr.filter(obj => obj.value === name);
}
console.log(getData(arr, 'bob'));
console.log(getData(arr, 'dave'));
console.log(getData(arr, 'mary'));
我想知道在数组中查找对象的所有索引然后从数组中删除它们的最佳方法是什么。 目前,我的代码如下所示;
var data = _.find(group.value, function(valueItem){ return valueItem.value == filter.value });
var index =_.indexOf(group.value,data);
group.value.splice(index,1);
这很好用,但如果索引不止一次,我只能得到第一个索引。所以,我正在寻找一种方法来获取数组中的所有索引,这样我就可以循环删除所有
使用filter
创建一个新的对象数组。
根据您的示例,此代码根据每个 value
属性 的值(名称)创建新数组。我已将 filter
代码包装在一个函数 (getData
) 中,您可以使用原始数组和要检查的名称作为参数调用该函数。
如果没有匹配项,函数将return一个空数组。
const arr = [
{ id: 1, value: 'bob' },
{ id: 2, value: 'dave' },
{ id: 3, value: 'bob' },
{ id: 4, value: 'bob' }
];
function getData(arr, name) {
return arr.filter(obj => obj.value === name);
}
console.log(getData(arr, 'bob'));
console.log(getData(arr, 'dave'));
console.log(getData(arr, 'mary'));