Javascript:如何删除数组中具有特定键的对象?

时间:2021-04-07 12:48:20

标签: javascript arrays object

我很难找到如何使用键从数组中删除对象 - 我只能找到有关键值的建议。例如:

var users = [
  { 1: [{age: 36, active: true}] },
  { 2: [{age: 40, active: false}] },
  { 3: [{age: 37, active: true}]}
];

我想删除 key = 2 的对象,结果如下:

var users = [
  { 1: [{age: 36, active: true}] },
  { 3: [{age: 37, active: true}]}
];

我的数据中的键是唯一的。

3 个答案:

答案 0 :(得分:2)

您可以使用 in 运算符来检查对象上是否存在键:

const users = [{"1":[{"age":36,"active":true}]},{"2":[{"age":40,"active":false}]},{"3":[{"age":37,"active":true}]}]

const result = users.filter(o => !('2' in o))

console.log(result)

答案 1 :(得分:1)

您可以尝试使用 Array.prototype.filter()

<块引用>

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

Object.keys()

<块引用>

Object.keys() 方法返回给定对象自己的可枚举属性 names 的数组,以与普通循环相同的顺序进行迭代。

var users = [
  { 1: [{age: 36, active: true}] },
  { 2: [{age: 40, active: false}] },
  { 3: [{age: 37, active: true}]}
];
users = users.filter(item => Object.keys(item)[0] != 2);
console.log(users);

答案 2 :(得分:1)

如果您想从原始数组中删除一个对象而不创建新数组,请使用 Array.findIndex 并通过索引删除元素。

var users = [
  { 1: [{age: 36, active: true}] },
  { 2: [{age: 40, active: false}] },
  { 3: [{age: 37, active: true}]}
];


let removableIndex = users.findIndex(ele => ele[2])

users.splice(removableIndex, 1)

console.log(users)

相关问题