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


Posted in Javascript onAugust 15, 2019

本文实例讲述了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();

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

Javascript 相关文章推荐
html中table数据排序的js代码
Aug 09 Javascript
JS完成代码前最好对其做5件事
Apr 07 Javascript
js 弹出框只弹一次(二次修改之后的)
Nov 26 Javascript
理解 JavaScript Scoping & Hoisting(二)
Nov 18 Javascript
AngularJS基础 ng-focus 指令简单示例
Aug 01 Javascript
AngularJS 实现弹性盒子布局的方法
Aug 30 Javascript
ThinkJS中如何使用MongoDB的CURD操作
Dec 13 Javascript
Node.js常用工具之util模块
Mar 09 Javascript
node.js爬虫爬取拉勾网职位信息
Mar 14 Javascript
Vue如何实现组件的源码解析
Jun 08 Javascript
Vue中强制组件重新渲染的正确方法
Jan 03 Vue.js
JavaScript圣杯布局与双飞翼布局实现案例详解
Aug 05 Javascript
angularjs1.X 重构controller 的方法小结
Aug 15 #Javascript
浅析Vue中拆分视图层代码的5点建议
Aug 15 #Javascript
vue的keep-alive用法技巧
Aug 15 #Javascript
Vue开发环境中修改端口号的实现方法
Aug 15 #Javascript
Vue触发隐藏input file的方法实例详解
Aug 14 #Javascript
如何使用50行javaScript代码实现简单版的call,apply,bind
Aug 14 #Javascript
微信小程序之数据绑定原理解析
Aug 14 #Javascript
You might like
php中根据变量的类型 选择echo或dump
2012/07/05 PHP
ThinkPHP模板中数组循环实例
2014/10/30 PHP
Yii学习总结之安装配置
2015/02/22 PHP
Laravel 解决419错误 -ajax请求错误的问题(CSRF验证)
2019/10/25 PHP
JQuery 入门实例1
2009/06/25 Javascript
JavaScript 动态添加表格行 使用模板、标记
2009/10/24 Javascript
JQuery里面的几种选择器 查找满足条件的元素$("#控件ID")
2011/08/23 Javascript
情人节之礼 js项链效果
2012/02/13 Javascript
IE与FireFox的JavaScript兼容问题解决办法
2013/12/31 Javascript
JavaScript 学习笔记之操作符
2015/01/14 Javascript
jquery实现仿新浪微博评论滚动效果
2015/08/06 Javascript
JQ选择器_选择同类元素的第N个子元素的实现方法
2016/09/08 Javascript
原生js jquery ajax请求以及jsonp的调用方法
2017/08/04 jQuery
select自定义小三角样式代码(实用总结)
2017/08/18 Javascript
微信小程序支付及退款流程详解
2017/11/30 Javascript
vue轮播图插件vue-concise-slider的使用
2018/03/13 Javascript
浅析前端路由简介以及vue-router实现原理
2018/06/01 Javascript
vue+elementUI实现表单和图片上传及验证功能示例
2019/05/14 Javascript
解决Vue打包上线之后部分CSS不生效的问题
2019/11/12 Javascript
pygame学习笔记(3):运动速率、时间、事件、文字
2015/04/15 Python
Python登录并获取CSDN博客所有文章列表代码实例
2017/12/28 Python
Python基于socket实现简单的即时通讯功能示例
2018/01/16 Python
python 多线程中子线程和主线程相互通信方法
2018/11/09 Python
python 下划线的不同用法
2020/10/24 Python
html5小程序飞入购物车(抛物线绘制运动轨迹点)
2020/10/19 HTML / CSS
英国异国风情旅游网站:Travel Talk Tours(团体旅游、探险旅游、帆船假期)
2018/07/26 全球购物
静态变量和实例变量的区别
2015/07/07 面试题
大学同学聚会邀请函
2014/01/19 职场文书
《月光启蒙》教学反思
2014/03/01 职场文书
高考备战决心书
2014/03/11 职场文书
岗位竞聘书范文
2014/03/31 职场文书
亮剑观后感
2015/06/05 职场文书
消防宣传标语大全
2015/08/03 职场文书
Golang二维数组的使用方式
2021/05/28 Golang
Python如何解决secure_filename对中文不支持问题
2021/07/16 Python
JS实现简单九宫格抽奖
2022/06/28 Javascript