javascript - 动态对象迭代 - javascript

标签 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], 

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

最佳答案

您可以拆分字符串,然后对索引数组使用 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'));

关于javascript - 动态对象迭代 - javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53760908/

相关文章:

javascript - 为什么这个 jquery 图像交换在 chrome 中不起作用并且在 firefox 中首次加载时不起作用

javascript - 带有数据的 Chartist.js 数组

javascript - 等待直到内部函数被触发

ios - 在 SWIFT 中自定义 UITableview 的第一行

jquery - return Json 提示我下载 Json 而不是将其交给 Controller

php - 优化ajax同步调用

java - 使用 gson 从 JsonArray 获取值

python - 通过回溯迭代图像

c++ - 如何为唯一键向后迭代 multimap ?

php - 文件结构到多维数组