JavaScript

超轻量级php框架startmvc

JS实现水平遍历和嵌套递归操作示例

更新时间:2020-09-08 01:24 作者:startmvc
本文实例讲述了JS实现水平遍历和嵌套递归操作。分享给大家供大家参考,具体如下:程序

本文实例讲述了JS实现水平遍历和嵌套递归操作。分享给大家供大家参考,具体如下:

程序中存在着一些有意思的逻辑,比如多层嵌套可以用递归遍历,比如同层的if else可以用数组遍历。

下面举例说明,多层嵌套的if else想要递归遍历需要写成下面的形式,以及用特定形式的递归遍历:

多层嵌套的if else转写成的函数


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'
 }
 }
 }
 }
 }
}

对多层嵌套的遍历:


function yunxing1() {
 while (test()) {
 test = test()
 if (typeof test === 'string') {
 alert(test)
 return '终止'
 }
 }
}
yunxing1()

同层多个if else改写的函数以及遍历方法


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();

以上,总结的有意思的逻辑,也是可以简化代码的方法。这样的逻辑还有很多………………

PS:这里再为大家推荐一款JS数组遍历方式分析对比工具供大家参考:

在线JS常见遍历方式性能分析比较工具:http://tools.jb51.net/aideddesign/js_bianli