首页 > 解决方案 > 在递归对象结构中搜索对象(代表文件系统)

问题描述

我想将要搜索的文件夹的名称作为输入传递,并将其所属的对象作为输出。

我的数组是这样的:

const array = {
  item: [{
      name: "parentFolder1",
      item: [{
          name: "subFolder1",
          item: []
        },
        {
          name: "subFolder2",
          item: []
        }
      ]
    },
    {
      name: "parentFolder2",
      item: [{
          name: "sub1",
          item: []
        },
        {
          name: "sub2",
          item: []
        }
      ]
    }
  ]
};


const sub = Object.values(array).map(x =>
  x.find(y => y.item.find(obj => obj.name = "sub2")))

console.dir(sub)

我想要的输出:

    {
      name: "sub2",
      item: []
    }

我得到的输出:

[ { name: 'parentFolder1', item: [ [Object], [Object] ] } ]

标签: javascript

解决方案


const array = {
  item: [{
      name: "parentFolder1",
      item: [{
          name: "subFolder1",
          item: []
        },
        {
          name: "subFolder2",
          item: []
        }
      ]
    },
    {
      name: "parentFolder2",
      item: [{
          name: "sub1",
          item: []
        },
        {
          name: "sub2",
          item: []
        }
      ]
    }
  ]
};


const val = array.item.map(folder => folder.item.find(obj => obj.name === "sub2")).find(val => val)
console.log(val)


推荐阅读