js遞歸數組遍歷


 var list = this.linklist;
    var str = 4;
    var num = 0;
    var getStr = function (list) {
      list.forEach((row) => {
        if (row.clients) {
          row.xais = str + num + "%";
          num += 1;
          getStr(row.clients);
        } else {
          row.xais = str + num + "%";
        }
      });
    };
    getStr(list);
    console.log(list);

可以看到,遞歸的方式來實現的時候,我們只需要一個for循環,每次遍歷接受到的數據,通過判斷是否還有children,沒有就代表是最后一級了,有就繼續把children這個list傳給函數繼續遍歷,最后就得到了我們想要的數據。

很明顯,forEach的遍歷的方式能實現多級的遍歷,並且數據格式可以靈活一些,但是遍歷的層級有限,而且對於未知層級的情況下,就無從下手了。
遞歸遍歷,理論上,只要內存夠用,你能實現任意層級的遍歷,但缺點也很明顯,沒一個層級里面需要有固定的數據格式,否則無法遍歷。

總結

1.很多時候可以用遞歸代替循環,可以理解為遞歸是一種特殊的循環,但通常情況下不推薦這樣做。
2.遞歸一般是在函數里面把函數自己給調用一遍,通過每次調用改變條件,來結束循環。
3.遞歸在數據格式一致,在數據層級未知的情況下,比普通的遍歷更有優勢。
4.遞歸在異步的時候,更容易理解,且更容易實現,因為可以在異步的回調里面,調用自己來實現每次都能拿到異步的結果再進行其他操作。
5.遞歸實現的快速排序比普通遍歷實現的排序效率更好。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM