如何删除JSON对象数组中与另一指定数组id匹配的元素
JS数组按匹配id过滤实现方案
我们需要从第一个数组中移除所有id存在于第二个数组内的元素,可参考以下两种实现:
方案1:基于Set实现(推荐,大数据量下性能更优)
先将第二个数组需要移除的id提取为Set集合,利用Set O(1)的查找特性提升过滤效率:
var arry1 = [{id:1,name:"muni"},{id:2,name:"Anji"}, {id:3,name:"vinod"},{id:4,name:"anil"}]; var arry2 = [{id:3},{id:1}]; // 提取需要移除的id集合 const removeIdSet = new Set(arry2.map(item => item.id)); // 过滤得到剩余元素 arry1 = arry1.filter(item => !removeIdSet.has(item.id));
执行后arry1的结果就是你需要的[{id:2,name:"Anji"},{id:4,name:"anil"}]。
方案2:基于Array.includes实现(适合小数据量场景)
如果两个数组的元素量都很小,可以直接用数组includes方法实现,写法更直观:
var arry1 = [{id:1,name:"muni"},{id:2,name:"Anji"}, {id:3,name:"vinod"},{id:4,name:"anil"}]; var arry2 = [{id:3},{id:1}]; const removeIds = arry2.map(item => item.id); arry1 = arry1.filter(item => !removeIds.includes(item.id));
内容的提问来源于stack exchange,提问作者Anji
相关产品推荐
相关产品推荐

