var list = this.linklist;
var str = 4;
var num = 0;
var getstr = function (list) else
});};
getstr(list);
console.log(list);
可以看到,遞迴的方式來實現的時候,我們只需要乙個for迴圈,每次遍歷接受到的資料,通過判斷是否還有children
,沒有就代表是最後一級了,有就繼續把children
這個list
傳給函式繼續遍歷,最後就得到了我們想要的資料。
很明顯,foreach
的遍歷的方式能實現多級的遍歷,並且資料格式可以靈活一些,但是遍歷的層級有限,而且對於未知層級的情況下,就無從下手了。
遞迴遍歷,理論上,只要記憶體夠用,你能實現任意層級的遍歷,但缺點也很明顯,沒乙個層級裡面需要有固定的資料格式,否則無法遍歷。
總結
1.很多時候可以用遞迴代替迴圈,可以理解為遞迴是一種特殊的迴圈,但通常情況下不推薦這樣做。
2.遞迴一般是在函式裡面把函式自己給呼叫一遍,通過每次呼叫改變條件,來結束迴圈。
3.遞迴在資料格式一致,在資料層級未知的情況下,比普通的遍歷更有優勢。
4.遞迴在非同步的時候,更容易理解,且更容易實現,因為可以在非同步的**裡面,呼叫自己來實現每次都能拿到非同步的結果再進行其他操作。
5.遞迴實現的快速排序比普通遍歷實現的排序效率更好。
js陣列遍歷
一 for迴圈類 基礎for迴圈 for let arr for let i 0,len arr.length i len i for in迴圈 for in param key 索引 下標 for var key in arr for in迴圈 for of param item 物件 for l...
js陣列遍歷
1 如何建立陣列。2 陣列的長度,陣列元素的新增和刪除 如何使用下標對陣列的操作 3 遍歷陣列的方式 for迴圈,for in遍歷 4 二維陣列 舉例並遍歷二維陣列 5 運算元組的方法。push pop unshift shift splice reverse sort join slice con...
js 陣列遍歷 物件遍歷
一 陣列遍歷 1,普通for迴圈,經常用的陣列遍歷 var arr 1,2,0,3,9 for var i 0 i 2,優化版for迴圈 使用變數,將長度快取起來,避免重複獲取長度,陣列很大時優化效果明顯 for var j 0,len arr.length j len j 3,foreach,es...