如何获取所有嵌套的子数组对象

时间:2019-12-21 14:54:52

标签: javascript arrays json filtering binary-search-tree

{
  "name":"123",
  "reponsetype":"2",
  "ussdcode":"123",
  "parrentussd":"0",
  "children": [
    {
      "name":"1 Menu",
      "reponsetype":"2",
      "ussdcode":"123*1",
      "parrentussd":"123"
    },
    {
      "name":"Menu 2",
      "reponsetype":"2",
      "ussdcode":"123*2",
      "parrentussd":"123",
      "children":[ 
        {
          "name":"Dynamic Menu 1", 
          "reponsetype":"4",
          "ussdcode":"123*2",
          "parrentussd":"123*2"
        }
    ] 
}

1 个答案:

答案 0 :(得分:0)

您可以使用递归来实现。

尝试一下:

let arr = { "name": "123", "reponsetype": "2", "ussdcode": "123", "parrentussd": "0", "children": [{ "name": "1 Menu", "reponsetype": "2", "ussdcode": "123*1", "parrentussd": "123" }, { "name": "Menu 2", "reponsetype": "2", "ussdcode": "123*2", "parrentussd": "123", "children": [{ "name": "Dynamic Menu 1", "reponsetype": "4", "ussdcode": "123*2", "parrentussd": "123*2" }] }] }
let res = [];

function getChild(obj) {
  for (let i = 0; i < obj.children.length; i++) {
    if (obj.children[i].children) {
      getChild(obj.children[i]);
      delete obj.children[i].children;
      res.push(obj.children[i])
   } else {
      res.push(obj.children[i])
   }
 }
}
getChild(arr);
console.log(res);