gpt4 book ai didi

javascript - 如何按id数组分组

转载 作者:行者123 更新时间:2023-12-02 22:40:34 25 4
gpt4 key购买 nike

大家好,可以帮我减少数组吗?我有两个数组,我需要在中间将其中一组分组。在这里您可以找到示例

我有对象数组

const arr = [{
mid: 888,
name: "test"
},
{
mid: 888,
name: "test1"
},
{
mid: 888,
name: "test2"
},
{
mid: 777,
name: "test10"
},
]

但是我需要按中进行分组并得到类似的东西

const arr = [{
mid: 888,
projects: [{
name: "test"
},
{
name: "test1"
},
{
name: "test2"
},
]
},
{
mid: 777,
projects: [{
name: "test10"
}, ]
}
]

最佳答案

const arr = [{
mid: 888,
name: "test"
},
{
mid: 888,
name: "test1"
},
{
mid: 888,
name: "test2"
},
{
mid: 777,
name: "test10"
}
];

let newArray = []
arr.map(item => item.mid).filter((value, index, self)=> {
return self.indexOf(value) === index;
}).forEach((mid)=>{
newArray.push({
mid,
projects: arr.filter(item => item.mid == mid).map(item =>{ return {name: item.name}; })
})
})

console.log(newArray)

使用reduce的其他方式:

const arr = [{
mid: 888,
name: "test"
},
{
mid: 888,
name: "test1"
},
{
mid: 888,
name: "test2"
},
{
mid: 777,
name: "test10"
}
];

newArray = arr.map(item => item.mid).filter((value, index, self)=> {
return self.indexOf(value) === index;
}).map(item=> { return {mid: item, projects: []}})

newArray = arr.reduce((res, current)=>{
let index = newArray.map(item => item.mid).indexOf(current.mid);
res[index].projects.push({name: current.name})

return res;
}, newArray)

console.log(newArray)

关于javascript - 如何按id数组分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58606169/

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