reduce遍历了一个数组,返回的结果不正确
想返回的结果:
{
4:[1,2,4],
5:[1,2,5],
6:[1,3,6],
7:[1,3,7],
}
但现在返回的结果是:
{
6:[1,3,6],
7:[1,3,7],
}
想问一下这是问题出在哪里呢?
代码如下:
let data = [
{
label: '1231',
value: 1,
children: [
{
label: 'qwe2',
value: 2,
children: [
{
label: 'qwe4',
value: 4,
children: []
},
{
label: 'asd5',
value: 5,
children: []
}
]
},
{
label: 'asd3',
value: 3,
children: [
{
label: 'qwe6',
value: 6,
children: []
},
{
label: 'asd7',
value: 7,
children: []
}
]
}
]
}
]
function ab(data,resultArray){
return data.reduce((pre,cur)=>{
let tempArray = [...resultArray];
let temp = {...cur};
delete temp.children;
tempArray.push(temp)
return cur.children && cur.children.length > 0
? ab(cur.children,tempArray)
: {...pre,[cur.value]:tempArray}
},{})
}
console.log(ab(data,[]))
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这样就行了,主要是children子项遍历时前一项整合的值没有存下来
写了一个 forEach 的程序
结果