gpt4 book ai didi

javascript - 使用filter()函数删除嵌套数组中的元素

转载 作者:行者123 更新时间:2023-12-01 02:21:03 32 4
gpt4 key购买 nike

我一直在尝试删除嵌套数组中具有 ID 的元素。

我不确定如何将 filter() 与嵌套数组一起使用。

我只想删除{id: 111,name: "A"} 对象。

这是我的代码:

var array = [{
id: 1,
list: [{
id: 123,
name: "Dartanan"
}, {
id: 456,
name: "Athos"
}, {
id: 789,
name: "Porthos"
}]
}, {
id: 2,
list: [{
id: 111,
name: "A"
}, {
id: 222,
name: "B"
}]
}]

var temp = array
for (let i = 0; i < array.length; i++) {
for (let j = 0; j < array[i].list.length; j++) {
temp = temp.filter(function(item) {
return item.list[j].id !== 123
})
}
}
array = temp

最佳答案

您可以使用函数forEach并对每个数组list执行函数filter

var array = [{    id: 1,    list: [{      id: 123,      name: "Dartanan"    }, {      id: 456,      name: "Athos"    }, {      id: 789,      name: "Porthos"    }]  },  {    id: 2,    list: [{      id: 111,      name: "A"    }, {      id: 222,      name: "B"    }]  }];

array.forEach(o => (o.list = o.list.filter(l => l.id != 111)));
console.log(array);
.as-console-wrapper { max-height: 100% !important; top: 0; }

要保持数据不可变,请使用函数map:

var array = [{    id: 1,    list: [{      id: 123,      name: "Dartanan"    }, {      id: 456,      name: "Athos"    }, {      id: 789,      name: "Porthos"    }]  },  {    id: 2,    list: [{      id: 111,      name: "A"    }, {      id: 222,      name: "B"    }]  }],
result = array.map(o => ({...o, list: o.list.filter(l => l.id != 111)}));

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - 使用filter()函数删除嵌套数组中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49214329/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com