javascript - 将数组对象合并在一起 - lodash

标签 javascript arrays merge lodash

所以我有一系列这样的项目:

items = [
    {
        amount: 2,
        name: 'bike'
    },
    {
        amount: 1,
        name: 'boat'
    },
    {
        amount: 3,
        name: 'bike'
    }
]

现在,我想合并这个数组,这样就不会有重复的自行车,并且仍然知道总共有多少辆自行车。

所以我的结果数组看起来像这样:

items = [
    {
        amount: 5,
        name: 'bike'
    },
    {
        amount: 1,
        name: 'boat'
    }
]

为了保持我的代码简短,有人建议我使用 lodash 并且我一直在寻找将数组合并在一起的不同方法。但老实说,弄清楚什么是最好的方法非常令人困惑,这就是为什么我要问你们 ^^

最佳答案

您可以使用 .groupBy.map , 和 _.sum计算数量,像这样

var items = [{
    amount: 2,
    name: 'bike'
}, {
    amount: 1,
    name: 'boat'
}, {
    amount: 3,
    name: 'bike'
}];

var res = _(items)
    .groupBy('name')
    .map(function (el, name) {
        return {
            name: name,
            amount: _.sum(el, 'amount')
        };
    })    
    .value();

console.log(res);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.7.0/lodash.min.js"></script>
<script src="http://gh-canon.github.io/stack-snippet-console/console.min.js"></script>

关于javascript - 将数组对象合并在一起 - lodash,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29915540/

相关文章:

javascript - 如何修复非数字值?

javascript - 限制与 AngularJS 状态匹配的动态 URL 参数的最佳方法

python - 复杂的 pandas 合并操作

mysql - SQL合并查询

javascript - Each() div 有两个类,如果这个 div 有 child ,则添加 css

javascript - 如何使用自定义 Angular Directive(指令)包含子元素?

c - 如何从c中的数组中删除一系列元素

arrays - 我可以在 AS3 中操作多个类中的单个数组吗?

javascript - 如何在唯一键内获取Firebase数据库嵌套数据访问

version-control - 合并文件的第二次、第三次等如何进行合并?