在多个对象数组之间查找唯一值

Finding unique values between multiple arrays of Objects

我从大型 CSV 文件中解析出 3 个对象数组。它们具有相同的格式:[{ count: 2, name: "foo", unique: false}, {count: 4, name: "foo", unique: false}],每个数组恰好包含 500 个对象。我正在寻找一种优雅的方法来针对所有三个数组检查名称键的值,如果它只存在于一个数组中,则将唯一键的布尔值更改为 true。除了事实证明昂贵的蛮力方法,我似乎想不出任何其他方法。不必是香草 javascript、下划线等都可以。有任何想法吗?

你可以连接 3 个数组,然后用下划线搜索唯一值(你说你不介意):

var all = a1.concat(a2).concat(a3)
_.uniq(all, function(obj){
    return obj.count;
});

另外 _.uniq(array, [isSorted], [iteratee]) 为您提供了对数组进行排序以提高性能的选项,但这取决于程序的用例是否值得。

一般来说,在您知道这是一个问题之前,我不会太担心性能。

http://underscorejs.org/#uniq