就像标题所示,我正在寻找一种方法来合并具有两个相同键值对的数组中的对象。例如,
var ingredients = [
{name: 'egg',qty: 3,msr: large},
{name: 'egg',qty: 3,msr: large},
{name: 'egg',qty: 3,msr: tbsp},
{name: 'bacon',qty: 1,msr: cup}
];
所需结果:
ingredients = [
{name: 'egg',qty: 6,msr: large},
{name: 'egg',qty: 3,msr: tbsp},
{name: 'bacon',qty: 1,msr: cup}
];
任何建议表示赞赏!
最佳答案
您可以尝试将Array#reduce与Array#find结合使用来构建新阵列。
我会通过name
和msr
检查您的对象是否存在。
看我的例子
var ingredients = [
{name: 'egg',qty: 3,msr: 'large'},
{name: 'egg',qty: 3,msr: 'large'},
{name: 'egg',qty: 3,msr: 'tbsp'},
{name: 'bacon',qty: 1,msr: 'cup'}
];
result = ingredients.reduce((acc, el) => {
var existEl = acc.find(e => e.name == el.name && e.msr == el.msr);
if (existEl) {
existEl.qty = existEl.qty + el.qty;
} else {
acc.push(el);
}
return acc;
}, []);
console.log(result);
关于javascript - 合并具有两个相同键值对的数组中的对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44084150/