You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Lodash根据ID数组移除对象数组中的指定元素?

解决方案:用Lodash移除匹配ID数组的对象

嘿,这个需求其实很好实现,别被“单一条件”的说法框住——_.remove的回调函数完全支持自定义判断逻辑,只要返回布尔值就行!咱们直接结合集合判断来搞定:

基础实现(直接用数组includes)

如果待移除的ID数量不多,直接用数组的includes方法就能快速完成判断:

var a = [ {id: 1, name: 'A'}, {id: 2, name: 'B'}, {id: 3, name: 'C'}, {id: 4, name: 'D'} ];
var removeItem = [1,2];

// 用_.remove遍历数组,移除id在removeItem里的元素
_.remove(a, item => removeItem.includes(item.id));

console.log(a); // 输出:[{id: 3, name: 'C'}, {id: 4, name: 'D'}]

性能优化版(用Set提升查找效率)

如果待移除的ID数量较多,数组includes的查找效率是O(n),建议把removeItem转成Set,查找速度会直接提升到O(1):

var a = [ {id: 1, name: 'A'}, {id: 2, name: 'B'}, {id: 3, name: 'C'}, {id: 4, name: 'D'} ];
var removeItem = [1,2];
// 转成Set优化查找性能
var removeIds = new Set(removeItem);

_.remove(a, item => removeIds.has(item.id));

console.log(a); // 同样得到目标结果

不修改原数组的方案(用_.filter)

如果不想直接修改原数组a,可以用_.filter生成新数组,原数组保持不变:

var a = [ {id: 1, name: 'A'}, {id: 2, name: 'B'}, {id: 3, name: 'C'}, {id: 4, name: 'D'} ];
var removeItem = [1,2];
var removeIds = new Set(removeItem);

// 过滤出不在移除列表里的元素,生成新数组
var filteredArray = _.filter(a, item => !removeIds.has(item.id));

console.log(filteredArray); // 新数组:[{id: 3, name: 'C'}, {id: 4, name: 'D'}]
console.log(a); // 原数组保持不变

简单来说,_.remove的回调函数完全支持复杂判断,只要在里面检查当前对象的ID是否属于待移除列表就行啦~

内容的提问来源于stack exchange,提问作者Gitesh Purbia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:00:40