js使用遞迴遍歷資料格式一致,資料層級未知的資料

2021-10-04 09:26:31 字數 1173 閱讀 9291

我們先看下面的**:

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初始化為...