首页 > 解决方案 > 试图通过它的特定元素从数组中删除对象

问题描述

我得到了一个里面有对象的数组,这些对象里面有元素。我将如何通过其中一个元素来处理其中一个对象?

let randomARR = [];

let a = {"name": "John", "age": 20, "PlaceOfBirth": "Germany"};
let b = {"name": "Simon", "age": 20, "PlaceOfBirth": "France"}; 
let c = {"name": "Michael", "age": 20, "PlaceOfBirth": "USA"};

randomARR.push(a);
randomARR.push(b);
randomARR.push(c);

结果:

[{"name": "John", "age": 20, "PlaceOfBirth": "Germany"}, {"name": "Simon", "age": 20, "PlaceOfBirth": "France"}, {"name": "Michael", "age": 20, "PlaceOfBirth": "USA"}]

假设我想通过对象的元素“name”而不是它在数组中的位置来寻址对象,从而从数组中删除对象 b(名称:Simon)。

标签: javascript

解决方案


您可以使用Array.prototype.filter

filter() 方法创建一个新数组,其中包含通过所提供函数实现的测试的所有元素。

它遍历数组的所有元素,并基于布尔返回将其从结果数组中保留/删除。您可以将其设置为当前数组以覆盖它。

let objArr = [{"name": "John", "age": 20, "PlaceOfBirth": "Germany"}, {"name": "Simon", "age": 20, "PlaceOfBirth": "France"}, {"name": "Michael", "age": 20, "PlaceOfBirth": "USA"}]

let newObj = objArr.filter(obj => obj.name !== "Simon");

// objArr = objArr.filter(obj => obj.name !== "Simon"); to overwrite

推荐阅读