JavaScript 通过路径递归查找

标签 javascript recursion ecmascript-6

我有以下数据结构:

[
  {
    name: 'root',
    children: [
      {
        name: 'page',
        children: [
          // and so on
        ]
      }
    ]
  }
]

我需要一个函数来获取路径给定的最新对象。例如。 getCurrentTree('root.page')应该返回

      {
        name: 'page',
        children: [
          // and so on
        ]
      }

希望你明白我的意思!我知道我应该递归地做,但是递归总是让我头疼。我也不确定是否应该使用 findfilter 来做到这一点?甚至减少?有人有什么好主意吗?

干杯

最佳答案

您可以检查名称并为 child 迭代或返回对象。

function getCurrentTree(array, names) {
    var [name, path] = names.split('.', 2),
        result;

    array.some(o => {
        if (o.name === name) {
            return result = path ? getCurrentTree(o.children, path) : o;
        }
    });
    return result
}

var data = [{ name: 'root', children: [{ name: 'page', children: [] }] }];

console.log(getCurrentTree(data, 'root.page'));

关于JavaScript 通过路径递归查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55045977/

相关文章:

javascript - 如何检查物体的深度?

java - 为什么return执行了两次

javascript - 如果我只有使用 ES6 的该对象的 id 数组,如何获取特定键的唯一值数组

tdd - React Native 中的单元测试触摸事件

javascript 数组仅在未完全充满内容时才有效

javascript - 如何在jquery html应用程序中使用wcf服务作为远程或本地?

javascript - Highcharts - 将空值替换为 0

javascript - 使用 intern.js 进行测试时无法滚动

php - 递归 chmod/chown/chgrp 目录中的所有文件和文件夹

javascript - Webpack 如何处理混搭模块语法