let arr = [{
id: 1,
desc: '555',
message: '哈哈哈',
},
{
id: 1,
desc: '6666',
message: '嘻嘻嘻'
}]
let newArr = arr.reduce((newArr, item) => {
//先找到循环的每条数据在新数组中是否存在
let result = newArr.find(it => it.id == item.id)
if (!result) { //不存在的话就把item添加到 然后新增一个字段为数组
const { message, ...rest } = item //剩余参数
newArr.push({ ...rest, submenu: [{ message: item.message }] })
} else {
newArr.forEach(i => { //如果在新数组中存在 在新增的字段的数组中添加这条数据 整合message在一个数组中
if (i.id === item.id) i.submenu.push({ message: item.message })
})
//然后在新数组中把这一条id出现的数据在加进去
newArr.push(item)
}
return newArr
}, [])
js 数组reduce方法把相同id的数据整合成一个子数组
最新推荐文章于 2024-07-23 18:15:45 发布