我有一个这样的数组
let oldArray=[
{type:16,img:['1']},
{type:16,img:['2']},
{type:16,img:['3']},
{type:17,img:['4']}
]如果类型相同,我希望将值连接起来。我想要的结果是:
let newArray=[
{type:16,img:['1','2','3']},
{type:17,img:['4']}
]我尝试使用reduce函数:
oldArray.reduce((acc,cur,idx,src)=>{
if(cur.type===a[idx+1].type){
cur.img.concat(a[idx+1].img);
acc.push(cur)
} else {
acc.push(a[idx+1])
}
return acc
},[])似乎有一个错误,有谁可以帮助吗?谢谢。
Bibberty解决方案的替代方案:flatMap比reduce清晰得多
let newArray = [...new Set(oldArray.map(e => e.type))]
.map(e => {
return {
type: e,
img: (oldArray.filter(i => i.type === e).map(x => x.img)).reduce((acc,cur,idx,src)=>{
let length=src.length
let tep=cur.concat(src[idx+1]);
src[idx+1]=tep
return src[idx=length-1]
},[])
}
});
console.log(newArray);https://stackoverflow.com/questions/55251679
复制相似问题