Как перечислить все возможные пути к самому глубокому ребенку в Javascript - PullRequest
0 голосов
/ 13 июля 2020

У меня есть ввод такого вложенного объекта.

{
  "13": {
    "6B": {
      "4A": {
        "1C": false,
        "2A": {
          "1A": false
        },
        "3B": {
          "1B": false
        }
      },
      "4B": {
        "1C": false,
        "2A": {
          "1A": false
        },
        "3B": {
          "1B": false
        }
      }
    }
  }
}

И я хотел бы получить вывод всех возможных путей к самому глубокому дочернему элементу, подобному этому.

[
    ["13", "6B", "4A", "1C"],
    ["13", "6B", "4A", "2A", "1A"],
    ["13", "6B", "4A", "3B", "1B"],
    ["13", "6B", "4B", "1C"],
    ["13", "6B", "4B", "2A", "1A"],
    ["13", "6B", "4B", "3B", "1B"]
]

На самом деле, код вроде этого работает. Но я хочу, чтобы результат был во вложенном массиве, а не в строке.

function flatten(obj, prev) {
    data=[];
    if(!prev) prev='';
    Object.keys(obj).map(k=>{
        if(obj[k]) {
            data = [...data, ...flatten(obj[k], prev+k+"-")];
        } else {
            data = [prev+k];
        }
    });
    return data;
}

Как это сделать в Javascript?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...