对象数组的下划线数组操作

Underscore array operations for array of objects

本文关键字:数组 操作 下划线 对象      更新时间:2023-09-26

下划线提供了方便的数组交集、差异和并的功能。但是对于对象数组,它们不能像预期的那样工作:

var first = {val: 1};
var otherFirst = {val: 1};
var second = {val: 2};
_.difference([first, second], [otherFirst]); // result is [first, second] instead of [second]

这是因为JS检查对象的引用是否相等。如何让两个对象数组相交?

我在寻找一种惯用的解决方案。

我已经有了一些东西,将工作在两个数组

_.filter([first,second], function(obj){
    return !_.findWhere([otherFirst], obj); 
});

它的作用是检查array1中的对象是否存在于array2中

使用remove也可以:

_.remove([first, second], otherFirst)