嗨,朋友,我在react中有一个平面数组,它有父字段,我想制作一个简单的javacsript算法或带有映射的react算法,并使它嵌套起来,就像树形关系数组一样
this.state = {
Catgeory: [
{id:'1' , name:'parent_1' , parentId:'0'},
{id:'2' , name:'child_1' , parentId:'1'},
{id:'3' , name:'child_2' , parentId:'1'},
{id:'4' , name:'parent_2' , parentId:'0'},
{id:'5' , name:'child_1' , parentId:'4'},
{id:'6' , name:'child_2' , parentId:'4'},
],
}
我希望这个数组像这样,然后如果发生这种情况,我可以用自己的方式映射到数组中...
Catgeory: [
{
id:'1' ,
name:'parent_1' ,
parentId:'0',
subCategory: [{
id:'2' ,
name:'child_1',
parentId:'1'
}, {
id:'3' ,
name:'child_2' ,
parentId:'1'
}]
}, {
id:'4' ,
name:'parent_2' ,
parentId:'0',
subCategory: [{
id:'5' ,
name:'child_1',
parentId:'4'
}, {
id:'6' ,
name:'child_2' ,
parentId:'4'
}]
},
]
最佳答案
这是正在使用的forEach()
,find()
和filter()
。在遍历数组时,您可以找到父添加,将其推入parent.subCategory
。
let category =
[
{id:'1' , name:'parent_1' , parentId:'0'},
{id:'2' , name:'child_1' , parentId:'1'},
{id:'3' , name:'child_2' , parentId:'1'},
{id:'4' , name:'parent_2' , parentId:'0'},
{id:'5' , name:'child_1' , parentId:'4'},
{id:'6' , name:'child_2' , parentId:'4'},
]
category.forEach(item => {
if(item.parentId !== '0'){
let parent = category.find(a => item.parentId === a.id)
parent.subCategory = parent.subCategory || [];
parent.subCategory.push(item);
}
})
category = category.filter(({parentId}) => parentId === '0')
console.log(category)
关于javascript - 我有一个具有父ID的平面数组,我想使其嵌套,并且像一个带有javascript的树父子数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54628984/