JS實(shí)現(xiàn)水平遍歷和嵌套遞歸操作示例
本文實(shí)例講述了JS實(shí)現(xiàn)水平遍歷和嵌套遞歸操作。分享給大家供大家參考,具體如下:
程序中存在著一些有意思的邏輯,比如多層嵌套可以用遞歸遍歷,比如同層的if else可以用數(shù)組遍歷。
下面舉例說(shuō)明,多層嵌套的if else想要遞歸遍歷需要寫成下面的形式,以及用特定形式的遞歸遍歷:
多層嵌套的if else轉(zhuǎn)寫成的函數(shù)
let p1 = false, p2 = true, p3 = false; let test = function() { if (p1) { return '終止1'; } else { return function() { if (p2) { return '終止2' } else { return function() { if (p3) { return '終止3' } } } } } }
對(duì)多層嵌套的遍歷:
function yunxing1() { while (test()) { test = test() if (typeof test === 'string') { alert(test) return '終止' } } } yunxing1()
同層多個(gè)if else改寫的函數(shù)以及遍歷方法
let i = 1, a = 2, b = 3; function simpleVlidate() { let varr = []; varr.push(() => { if (i === 1) { return '不能等于1' } }) varr.push(() => { if (a === 2) { return '不能等于2' } }) varr.push(() => { if (b === 3) { return '不能等于3' } }) return varr } let arrs = simpleVlidate(); function yunxing() { for (let i = 0, fn; fn = arrs[i++];) { if (fn()) { alert(fn()) return; } } console.log(343433333333) } yunxing();
以上,總結(jié)的有意思的邏輯,也是可以簡(jiǎn)化代碼的方法。這樣的邏輯還有很多………………
PS:這里再為大家推薦一款JS數(shù)組遍歷方式分析對(duì)比工具供大家參考:
在線JS常見遍歷方式性能分析比較工具:http://tools.jb51.net/aideddesign/js_bianli
更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《JavaScript數(shù)組操作技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》、《javascript面向?qū)ο笕腴T教程》、《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》及《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)》
希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。
相關(guān)文章
filters.revealTrans.Transition使用方法小結(jié)
有看到幻燈片調(diào)用會(huì)用到divid.filters.revealTrans.Transition=Math.floor(Math.random()*23)和divid.filters.revealTrans.apply(),那么這兩個(gè)都是什么意思呢?2010-08-08javascript獲取系統(tǒng)當(dāng)前時(shí)間的方法
這篇文章主要介紹了javascript獲取系統(tǒng)當(dāng)前時(shí)間的方法,格式為:2015年11月19日 星期四09:21:05,需要的朋友可以參考下2015-11-11微信小程序監(jiān)聽用戶登錄事件的實(shí)現(xiàn)方法
這篇文章主要介紹了微信小程序監(jiān)聽用戶登錄事件的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11詳解webpack 入門總結(jié)和實(shí)踐(按需異步加載,css單獨(dú)打包,生成多個(gè)入口文件)
本篇文章主要介紹了webpack 入門總結(jié)和實(shí)踐(按需異步加載,css單獨(dú)打包,生成多個(gè)入口文件) ,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06使用JavaScript實(shí)現(xiàn)獲取audio時(shí)長(zhǎng)
這篇文章主要為大家詳細(xì)介紹了如何使用JavaScript實(shí)現(xiàn)獲取audio時(shí)長(zhǎng),并且轉(zhuǎn)換為分鐘00:00:00格式,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-04-04使用smartupload組件實(shí)現(xiàn)jsp+jdbc上傳下載文件實(shí)例解析
這篇文章主要介紹了使用smartupload組件實(shí)現(xiàn)jsp+jdbc上傳下載文件實(shí)例解析,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-01-01js自定義鼠標(biāo)右鍵的實(shí)現(xiàn)原理及源碼
這篇文章主要介紹了js自定義鼠標(biāo)右鍵的實(shí)現(xiàn)原理及源碼,需要的朋友可以參考下2014-06-06微信小程序?qū)崿F(xiàn)2048小游戲的詳細(xì)過(guò)程
這篇文章主要給大家介紹了關(guān)于微信小程序?qū)崿F(xiàn)2048小游戲的相關(guān)資料,文中將實(shí)現(xiàn)的代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用微信小程序具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2021-09-09