嗨,朋友,我在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/

10-09 23:29
查看更多