javascript - 如何将对象列表减少为重复项

标签 javascript lodash

[为清楚起见进行了编辑]

使用 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/

相关文章:

javascript - JQuery 创建选项卡,tabs() 函数的问题

javascript - 如何覆盖电子邮件输入验证器消息?

javascript - 在javascript中创建对象数组

javascript - 更新一个输入值就是更新AngularJS中数组中所有对应的输入值

javascript - 使用 lodash 对行进行分组和求和

javascript - lodash uniq - 选择要保留在对象数组中的重复对象

javascript - _ (lodash) 声明为 peerDependency 时的引用错误

javascript - 根据属性值使用 lodash 过滤对象数组

javascript ->>>= 是什么意思?

javascript - 正则表达式忽略命名模式