Получить все пути к указанному ключу c в глубоко вложенном объекте - PullRequest
0 голосов
/ 22 февраля 2020

Как мне рекурсивно искать указанный ключ c в глубоко вложенном объекте.

Например:

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]

Результатом должен быть список всех путей к ключ в любом месте вложенного объекта

1 Ответ

0 голосов
/ 22 февраля 2020

Вы можете создать рекурсивную функцию для этого, используя for...in l oop.

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...