如何从数组中删除所有不具有特定属性的对象?

时间:2019-12-26 21:19:23

标签: javascript arrays

在对象数组中,我要删除所有没有具有特定属性的对象。

这是我到目前为止尝试过的:

myArray.splice(myArray.findIndex(item => item.myProperty === null), 1)

它似乎不起作用。我该怎么办?

3 个答案:

答案 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);