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

如何使用Lodash比较不同长度数组并提取新增元素?

用Lodash获取数组中的新增元素

嘿,这个需求其实用Lodash的内置方法就能完美解决!核心思路就是找出新数组中存在但已有数组中没有的元素,Lodash的_.difference方法正好是干这个的——它会返回第一个数组里独有的元素,完全匹配你要的“新增元素”逻辑。

基础用法(基本类型数组)

_.difference的语法很简单:

_.difference(newArray, existingArray)

它会遍历新数组,把那些不在已有数组里的元素挑出来,直接返回结果。我们用你给出的例子来验证:

  1. 当已有数组为空,新数组是[1]:
const existing = [];
const newArr = [1];
const added = _.difference(newArr, existing);
// 结果:[1]
  1. 已有数组[1,2],新数组[3,4]:
const existing = [1,2];
const newArr = [3,4];
const added = _.difference(newArr, existing);
// 结果:[3, 4]
  1. 已有数组[1,2,3],新数组[3,4]:
const existing = [1,2,3];
const newArr = [3,4];
const added = _.difference(newArr, existing);
// 结果:[4]

完全和你的预期结果一致!

进阶:处理复杂对象数组

如果你的数组里存的是对象(而不是数字、字符串这种基本类型),_.difference就不好使了,因为它是按引用比较的。这时候可以用_.differenceWith,配合_.isEqual来做深度比较:

const existingObjects = [{ id: 1, name: 'Alice' }, { id: 2, name: 'Bob' }];
const newObjects = [{ id: 2, name: 'Bob' }, { id: 3, name: 'Charlie' }];
const addedObjects = _.differenceWith(newObjects, existingObjects, _.isEqual);
// 结果:[{ id: 3, name: 'Charlie' }]

这样不管是基本类型还是复杂对象,都能准确找出新增元素啦~

内容的提问来源于stack exchange,提问作者Stanislav Mayorov

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:24:48