我有一个重复值的数组:
[ ['Deer Skin', 1], ['Bear Skin', 1], ['Deer Skin', 1], ['Cougar Skin', 2] ... ]
我想通过的字符串值比较它们,index[0]
并在将结果存储在新对象中时删除重复项。
结果值如下所示:
[ {name: 'Deer Skin', quantity: 4}, {name: 'Bear Skin', quantity: 5}, {name: 'Cougar Skin', quantity: 4} ... ]
我不完全确定如何从这里继续。现在,我有一个对象数组,其中所有初始重复数组值都已删除:
[
{name: "Deer Skin", quantity: 0}
{name: "Bear Skin", quantity: 0}
{name: "Cougar Skin", quantity: 0}
...
但是我不理解如何映射以下值:
[ ['Deer Skin', 1], ['Bear Skin', 1], ['Deer Skin', 1], ['Cougar Skin', 2] ... ]
以上对象。
您可以使用它.reduce
来实现。在这里,我已经将accumulator(acc
)初始化为一个空对象{}
。随着数组的迭代,三元运算符决定是否将数量添加到键(elem[0]
)的当前值中(我们仅在之前看过它时才添加-如果我们尝试添加到我们之前未见过的内容中,将NaN
作为我们的值)或是否要创建新的键值对(如果之前没有看到键值)。
请参见下面的工作示例:
const arr = [
['Deer Skin', 1],
['Bear Skin', 1],
['Deer Skin', 1],
['Cougar Skin', 2]
];
const res = arr.reduce((acc, elem) => {
elem[0] in acc ? acc[elem[0]] += elem[1] : acc[elem[0]] = elem[1];
return acc;
}, {});
console.log(res);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句