【问题标题】:Move objects in array where duplicates occur在出现重复的数组中移动对象
【发布时间】:2022-08-18 23:01:29
【问题描述】:

我有一个对象数组,每个数组都有一个名称键,然后是另一个对象数组:

const myArray = [ { name: \"1\", item: [{}] }, { name: \"2\", item: [{}] }, { name: \"1\", item: [{}] } ]

现在例如,有时该名称键将是相同的,我希望能够检查该名称是否存在,如果它确实存在,则将项目推入该数组对象而不是新对象。

我得到的行为在上面,但我想:

const myArray = [ { name: \"1\", item: [{ item1, item2 etc }] }, { name: \"2\", item: [{}] }, { name: \"3\", item: [{}] } ]

提前非常感谢!

  • 项目数组是否还包含数组内的对象?还是像item: [item1, item2]
  • 感谢您的回复,是的,所以项目可以是:项目:[项目1:{},项目2:{}]

标签: javascript


【解决方案1】:

您可以使用Array.reduce() 获得所需的结果,按name 分组。

如果myArray 中的两个对象具有相同的名称,则会合并项目值。

const myArray = [ { name: "1", item: [{ id: 1 }] }, { name: "2", item: [{ id: 2}] }, { name: "1", item: [{ id: 3}] } ]

const result = Object.values(myArray.reduce((acc, { name, item }) => { 
    acc[name] = acc[name] || { name, item: [] };
    acc[name].item.push(...item);
    return acc;
}, {}))

console.log('Result:', result)
.as-console-wrapper { max-height: 100% !important; }

【讨论】:

    猜你喜欢
    • 2021-11-16
    • 2022-11-03
    • 2014-08-25
    • 2022-01-20
    • 2010-12-27
    • 2017-12-28
    相关资源
    最近更新 更多