如何从JavaScript对象数组中移除所有含指定键值的对象
可行实现方案
- 方案1:使用
filter方法(无副作用,推荐优先使用)filter方法会返回符合条件的元素组成的新数组,不会修改原数组,是最常用的实现方式:
// 过滤出所有name不等于a的元素组成新数组 const newArray = myArray.filter(item => item.name !== 'a');
如果需要直接覆盖原变量,直接赋值即可:myArray = myArray.filter(item => item.name !== 'a');
- 方案2:原地修改原数组(适配需要修改原数组的场景)
如果要求直接修改原数组,推荐倒序遍历配合splice方法,避免正序删除导致的索引偏移漏项问题:
for (let i = myArray.length - 1; i >= 0; i--) { if (myArray[i].name === 'a') { // 从索引i位置删除1个元素 myArray.splice(i, 1); } }
- 方案3:使用
reduce方法(适配需要同步做其他数据处理的场景)
如果过滤的同时还要对元素做其他转换操作,可以用reduce实现,灵活度更高:
const result = myArray.reduce((res, current) => { if (current.name !== 'a') { // 此处可额外对current做自定义处理后再推入结果数组 res.push(current); } return res; }, []);
内容的提问来源于stack exchange,提问作者CoderGuruXYZ
相关产品推荐
相关产品推荐

