gpt4 book ai didi

javascript - 从具有重复值的数组创建对象

转载 作者:行者123 更新时间:2023-11-29 18:45:47 27 4
gpt4 key购买 nike

我有一个包含重复值的数组:

[ ['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 来实现这一点。在这里,我已将累加器 (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);

关于javascript - 从具有重复值的数组创建对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54166539/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com