亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

請教一個js對json遍歷的問題

請教一個js對json遍歷的問題

HUX布斯 2018-11-13 17:14:37
比如說 我想找得id為4,就應該返回 [1,3,4]想找得id 為9 該返回 [1,3,9]想找得id為7 改返回 [6,7]不知道我說明白沒有。謝謝解答啊
查看完整描述

1 回答

?
開滿天機

TA貢獻1786條經驗 獲得超13個贊

很多人都在抱怨你沒有把代碼貼出來,能回答問題的人可都是真心的!
簡化版實驗原始數據(也供其他人可以驗證自己的方案)

var nodes = [

    {

      "id": 1, 

      "children": [

        {

          "id": 3,

          "children": [

            {"id": 4},

            {"id": 9}

          ]

        },

        {

          "id": 10

        },

      ]

    },

    {

      "id": 2

    },

    {

      "id": 6,

      "children" : [

        { "id": 5},

        { "id": 7},

        { "id": 8}

      ]

    }

];

JS查找輸出結果


//遞歸實現

//@leafId  為你要查找的id,

//@nodes   為原始Json數據

//@path    供遞歸使用,不要賦值

function findPathByLeafId(leafId, nodes, path) {

  if(path === undefined) {

    path = [];

  }

  for(var i = 0; i < nodes.length; i++) {

      var tmpPath = path.concat();

      tmpPath.push(nodes[i].id);

      if(leafId == nodes[i].id) {

         return tmpPath;

      }

      if(nodes[i].children) {

        var findResult = findPathByLeafId(leafId, nodes[i].children, tmpPath);

        if(findResult) {

          return findResult;

        }

      }

  }

}


//用法

console.log(findPathByLeafId(4, nodes));   //輸出 [1,3,4]

console.log(findPathByLeafId(9, nodes));   //輸出 [1,3,9]

console.log(findPathByLeafId(7, nodes));   //輸出 [6,7]


查看完整回答
反對 回復 2018-12-08
  • 1 回答
  • 0 關注
  • 471 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號