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)代码>