我們先看下面的**:
var data =[,
]}]}
,,]}
]},,
]},,
]},,
]}]}
]}]
某些時候,坑逼後台讓我們遍歷上面的乙個陣列,最後在頁面上顯示沒一級的最後乙個資料。就是下面的資料:
青蘋果;紅蘋果;北方公尺飯;南方公尺飯;聯想電腦;蘋果電腦;鋤頭;錘子;洗髮水;沐浴露;我們先用遍歷的方式來實現:
//普通遍歷實現
varforfunction
=function()
)})}
)}) console.
log(str)
}forfunction()
//輸出:青蘋果;紅蘋果;北方公尺飯;南方公尺飯;聯想電腦;蘋果電腦;鋤頭;錘子;洗髮水;沐浴露;
複製**
可以看到,前端累死累死寫了4個foreach
實現了產品要的效果,這時候如果再加點別的什麼邏輯,就很難弄了。這時候我們嘗試用遞迴的思想實現:
//遞迴遍歷實現
varrecursivefunction
=function()
else})
}getstr
(data)
console.
log(str)
}recursivefunction()
//輸出:青蘋果;紅蘋果;北方公尺飯;南方公尺飯;聯想電腦;蘋果電腦;鋤頭;錘子;洗髮水;沐浴露;
可以看到,遞迴的方式來實現的時候,我們只需要乙個for迴圈,每次遍歷接受到的資料,通過判斷是否還有children
,沒有就代表是最後一級了,有就繼續把children
這個list
傳給函式繼續遍歷,最後就得到了我們想要的資料。
很明顯,foreach
的遍歷的方式能實現多級的遍歷,並且資料格式可以靈活一些,但是遍歷的層級有限,而且對於未知層級的情況下,就無從下手了。 遞迴遍歷,理論上,只要記憶體夠用,你能實現任意層級的遍歷,但缺點也很明顯,沒乙個層級裡面需要有固定的資料格式,否則無法遍歷。
ORACLE 正則解決初使化資料格式不一致
如 2000 1 1 2000 01 01 2000 01 1 2000 01 01 2000 1 01 2000 01 01 以前會寫乙個function procedure之類的指令碼,大量的if else。今次無意中發現orazrfiaqtxjdcle10g已經支援正則功能,上述問題也就迎刃而...
C 查詢資料庫 時間格式與資料庫不一致
在c 伺服器中,使用date.now.tostring 生成的字串時間,如果不指定字串格式,c 會按照系統語言輸出不同的字串格式,如 a.美國 06 01 2019 01 59 00 pm b.中國 2019 06 01 13 59 00 解決方案 使用全域性配置模式 globalization節點...
java中的一些資料格式的宣告 使用(二)
1 list變數宣告使用 list optioncitynames new arraylist 新增元素使用add方法,獲取元素使用get方法,大小用size方法 string型別的資料獲取長度用length listoptionvehiclenames new arraylist list初始化為...