【问题标题】:Get all paths to a specific key in a deeply nested object获取深度嵌套对象中特定键的所有路径
【发布时间】:2020-02-22 13:08:20
【问题描述】:

如何递归搜索深度嵌套对象中的特定键。

例如:

let myObject = {a: {k:111, d:3},  b:"2", c: { b: {k: 222}}, d: {q: {w: k: 333}}} }
let result  = findAllPaths(myObject, "k")

// result = [a.k, c.b.k, d.q.w.k]

结果应该是嵌套对象中任意位置的键的所有路径的列表

【问题讨论】:

  • 是什么试图实现这个@IDimension。你能分享你的代码吗?
  • 请分享您尝试过的代码或您迄今为止所做的研究。
  • 对象有语法错误。 q.k.w 不正确。

标签: javascript object recursion


【解决方案1】:

您可以使用for...in 循环创建递归函数来执行此操作。

let myObject = {a: {k:111, d:3},  b:"2", c: { b: {k: 222}}, d: {q: {w: {k: 333}}} }

function getAllPaths(obj, key, prev = '') {
  const result = []

  for (let k in obj) {
    let path = prev + (prev ? '.' : '') + k;

    if (k == key) {
      result.push(path)
    } else if (typeof obj[k] == 'object') {
      result.push(...getAllPaths(obj[k], key, path))
    }
  }

  return result
}

const result = getAllPaths(myObject, 'k');
console.log(result);

【讨论】:

    猜你喜欢
    • 2021-10-31
    • 2021-08-09
    • 2022-07-08
    • 1970-01-01
    • 1970-01-01
    • 2019-07-18
    • 2021-11-27
    • 2021-08-31
    • 1970-01-01
    相关资源
    最近更新 更多