【问题标题】:Create a array of objects by grouping objects conditionally [duplicate]通过有条件地对对象进行分组来创建对象数组[重复]
【发布时间】:2023-01-10 15:23:47
【问题描述】:

我正在尝试通过比较两个数组来创建一个新的对象数组。一个数组包含要比较的 id,另一个包含应该与第一个数组进行比较的数据集,必须创建一个新的对象数组。

让我详细解释一下

考虑数组 1:

['1','2']

阵列 2

[{name:Linus,id:'1'},{name:Anthony,id:'1'},{name:Jake,id:'2'},{name:Eva,id:'2'}]

我期望的输出是:

[
{id:'1',users:[{name:Linus,id:'1'},{name:Anthony,id:'1'}]},
{id:'2',users:[{name:Jake,id:'2'},{name:Eva,id:'2'}
]

我不确定必须做什么。

【问题讨论】:

  • 您设法将所有数值作为字符串引用,但没有引用实际字符串。请edit你的问题,所以它是有效的 JS

标签: javascript


【解决方案1】:

例如这样的事情

const ids = ['1','2'];
const users = [{name:Linus,id:'1'},{name:Anthony,id:'1'},{name:Jake,id:'2'},{name:Eva,id:'2'}];

const groups = ids.map(id =>{
    return {
        id,
        users: users.filter(u => u.id === id)
    }
})

【讨论】:

    【解决方案2】:

    const groupBy = ['1','2'];
    const data = [{name:'Linus',id:'1'},{name:'Anthony',id:'1'},{name:'Jake',id:'2'},{name:'Eva',id:'2'}];
    
    const result = groupBy.map(id => {
        return {
      id,
      users: data.filter(item => item.id == id),
      }
    })
    
    console.log(result);

    试试这个代码

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-28
      • 2021-07-13
      • 1970-01-01
      • 2018-11-27
      • 2022-01-14
      • 1970-01-01
      相关资源
      最近更新 更多