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

凯尔·普法勒

我有一个重复值的数组:

[ ['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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

创建具有数组值的对象

在数组中组合具有重复值的对象

Laravel删除数组中具有重复值的对象

如何从具有重复值的数组中嵌套对象

从具有相同键,值值的数组创建对象

如何创建具有公共属性值的对象数组

创建具有n个相同值/对象的副本的数组?

具有重复值的数组数组

如何检查对象数组是否具有具有更多属性的重复属性值?

在具有重复条目的数组中查找具有最大(全局)值的对象

将对象保留在具有最高值的数组中,但删除所有具有重复值的对象

创建具有重复值的数据框

创建具有重复值的HashSet

创建具有重复值的字典

php - 比较具有重复值的数组

如何订购具有重复值的数组?

具有重复值的扁平数组

从 array 的对象数组创建新的数组数组,具有特定值

如何在JavaScript中创建带有子项且没有重复值的对象数组

如何检查对象数组是否具有重复的属性值并获取重复的最后一个值?

如何检查对象数组是否具有重复的属性值?

在对象数组中提取具有相同键的非重复值

Javascript-如何创建对象的数组,其中对象的键都具有相同的值

对象数组:为每个具有值的指定键创建一个新对象

如何为每个对象创建具有不同值的对象数组

创建一个新的对象数组并合并具有相同值的对象

重复数组对象值创建为多维数组

创建具有动态属性的对象数组

在PHP中,如何删除对象数组中的重复项,其中重复项定义为具有相同值的键值对的子集