OBJ动态迭代-JavaScript

时间:2018-12-13 11:32:45

标签: javascript json iteration

我有一个json对象,需要对其进行迭代,我可以将迭代用作函数,但希望查看是否有更简单的方法。 对象如下图所示:

obj = [
  {
    name: 'FolderA',
    child: [
      {
        name: 'FolderB',
        child: [
           {
            name: 'FolderC0',
            child: [],
          },
          {
            name: 'FolderC1',
            child: [],
          }
         ]
       }
   ],
 },
 {
    name: 'FolderM'
    child: []
 }
]

在某些情况下,我会获得关卡,例如

level = "0-0-1"

我拆分得到[0,0,1] 含义,第0个索引,嵌套的第0个索引以及进一步嵌套的第1个索引,我得到的像是:

obj[0][0][1], 

但是由于嵌套结构的深度是未知的,因此我希望上述内容能够动态生成,就像这样:

obj + [0] + .children[0] + .children[1], 

不确定是否可以这样做,但是如果有,请告诉我,否则我将不得不使用递归函数。谢谢

1 个答案:

答案 0 :(得分:1)

您可以拆分字符串,然后在索引数组上使用reduce:

const arr = [
  {
    name: 'FolderA',
    child: [
      {
        name: 'FolderB',
        child: [
          {
            name: 'FolderC0',
            child: [],
          },
          {
            name: 'FolderC1',
            child: [],
          },
        ],
      },
    ],
  },
  {
    name: 'FolderM',
    child: [],
  },
];
const getObject = (arr, path) =>
  path
    .split('-')
    .reduce((result, key) => result.child[key], {
      child: arr,
    });

console.log(getObject(arr, '0-0-1'));