在对象数组中,我要删除所有没有具有特定属性的对象。
这是我到目前为止尝试过的:
myArray.splice(myArray.findIndex(item => item.myProperty === null), 1)
它似乎不起作用。我该怎么办?
答案 0 :(得分:2)
只要有数组并想删除某些项目,就将其视为“过滤”问题
const hasProp = prop => item => {
// if the prop is in the item, returns true
return prop in item;
}
// filter takes a predicate function (1 param, returns true/false)
// filter is 'immutable' i.e. returns a new array
const filteredArray = myArray.filter(hasProp('myProperty'))
以上内容创建了可重用的过滤功能(高阶功能)。也可以使用较少重复使用(较少的功能编程)的方式来编写它:
const filteredArray = myArray.filter( item => {
return 'myProperty' in item;
})
答案 1 :(得分:-1)
您也可以在下面的链接中找到答案
remove objects from array by object property
// we have an array of objects, we want to remove one object using only the id property
var apps = [{id:34,name:'My App',another:'thing'},{id:37,name:'My New App',another:'things'}];
// get index of object with id:37
var removeIndex = apps.map(function(item) { return item.id; }).indexOf(37);
// remove object
apps.splice(removeIndex, 1);
答案 2 :(得分:-1)
您可以使用filter
删除项目。返回的最终数组将包含必需的值。
const fruits = [
{ color: 'yellow', name: 'banana' },
{ color: 'yellow', name: 'mango' },
{ color: 'green', name: 'guava' }
];
const colorToRemove = 'yellow';
const filteredFruit = fruits.filter((item) => item.color !== colorToRemove);
console.log(filteredFruit);