[为清楚起见进行了编辑]
使用 lodash,给定一个对象数组:
var v = [{'a':1, 'b':1}, {'a':1, 'b':2}, {'a':1, 'c':1}];
如何返回作为这些对象(键和值)的交集的对象?在这种情况下:
{'a':1}
我正在寻找每个对象中的键值对。
这似乎是 _.reduce 的任务, 但我不确定如何找到对象重复项。
最佳答案
您可以通过迭代键和检查值来减少对象。然后构建一个新的对象并返回。
var array = [{ a: 1, b: 1 }, { a: 1, b: 2 }, { a: 1, c: 1 }],
result = array.reduce(function (a, b) {
return Object.keys(a).reduce(function (o, k) {
if (a[k] === b[k]) {
o[k] = a[k];
}
return o;
}, {});
});
console.log(result);
ES6 与 Object.assign
var array = [{ a: 1, b: 1 }, { a: 1, b: 2 }, { a: 1, c: 1 }],
result = array.reduce((a, b) =>
Object.keys(a).reduce((o, k) =>
Object.assign(o, a[k] === b[k] ? { [k]: a[k] } : {}), {}));
console.log(result);
关于javascript - 如何将对象列表减少为重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46219812/