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

Javascript 将数组对象合并在一起-lodash,javascript,arrays,merge,lodash,Javascript,Arrays,Merge,Lodash,因此,我有一系列类似这样的项目: items = [ { amount: 2, name: 'bike' }, { amount: 1, name: 'boat' }, { amount: 3, name: 'bike' } ] items = [ { amount: 5, name: 'bike' },

因此,我有一系列类似这样的项目:

items = [
    {
        amount: 2,
        name: 'bike'
    },
    {
        amount: 1,
        name: 'boat'
    },
    {
        amount: 3,
        name: 'bike'
    }
]
items = [
    {
        amount: 5,
        name: 'bike'
    },
    {
        amount: 1,
        name: 'boat'
    }
]
现在,我想合并这个数组,这样就不会有重复的自行车,并且仍然知道总共有多少辆自行车

因此,我的结果数组如下所示:

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

为了保持代码简短,有人建议我使用
lodash
,我一直在研究将数组合并在一起的不同方法。但是说实话,要想知道最好的方法是什么是相当令人困惑的,这就是为什么我要问大家^^

如果你不想专门为这个例子加载
lodash
(不确定额外的50K是否值得你在这里多写几行代码)下面是一个普通的JS版本,它使用一个临时对象来保存值,同时在各种对象上循环:

function merge(items) {
    var tmp = {}, out = [];
    for (var i = 0, l = items.length; i < l; i++) {
        var name = items[i].name;
        var amount = items[i].amount;
        if (!tmp[name]) tmp[name] = 0;
        tmp[name] += amount;
    }
    for (var p in tmp) {
        out.push({ name: p, amount: tmp[p] });
    }
    return out;
}

merge(items); // [{"name":"bike","amount":5},{"name":"boat","amount":1}]
函数合并(项){
var tmp={},out=[];
对于(变量i=0,l=items.length;i

您可以与一起使用,并用于计算
金额,如下所示

var项目=[{
金额:2,
名称:“自行车”
}, {
金额:1,
名称:“船”
}, {
金额:3,
名称:“自行车”
}];
var res=(项目)
.groupBy('名称')
.map(功能(el,名称){
返回{
姓名:姓名,,
金额:总和(el,'金额')
};
})    
.value();
控制台日志(res)