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 相关文章推荐
JavaScript中去掉数组中的重复值的实现方法
Aug 03 Javascript
JavaScript定时器详解及实例
Aug 01 Javascript
js 操作select与option(示例讲解)
Dec 20 Javascript
alert和confirm功能介绍
May 21 Javascript
深入理解AngularJS中的ng-bind-html指令和$sce服务
Sep 08 Javascript
浅谈EasyUI常用控件的禁用方法
Nov 09 Javascript
jQuery使用bind函数实现绑定多个事件的方法
Oct 11 jQuery
微信小程序实现动态改变view标签宽度和高度的方法【附demo源码下载】
Dec 05 Javascript
微信小程序实现下载进度条的方法
Dec 08 Javascript
layui-table表复选框勾选的所有行数据获取的例子
Sep 13 Javascript
利用原生JS实现欢乐水果机小游戏
Apr 23 Javascript
微信小程序中的列表切换功能实例代码详解
Jun 09 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中将字符串转化为整数(int) intval() printf() 性能测试
2020/03/20 PHP
php中关于socket的系列函数总结
2015/05/18 PHP
详解PHP中的序列化、反序列化操作
2017/03/21 PHP
JS在IE和FireFox之间常用函数的区别小结
2010/03/12 Javascript
jQuery 下拉列表 二级联动插件分享
2012/03/29 Javascript
javascript代码运行不出来执行错误的可能情况整理
2013/10/18 Javascript
jQuery回到顶部的代码
2016/07/09 Javascript
基于angularJS的表单验证指令介绍
2016/10/21 Javascript
详解express与koa中间件模式对比
2017/08/07 Javascript
Javascript中parseInt的正确使用方式
2018/10/17 Javascript
vue请求本地自己编写的json文件的方法
2019/04/25 Javascript
echarts大屏字体自适应的方法步骤
2019/07/12 Javascript
解决layui table表单提示数据接口请求异常的问题
2019/09/24 Javascript
[10:14]2018DOTA2国际邀请赛寻真——paiN Gaming不仅为自己而战
2018/08/14 DOTA
Python 网络编程起步(Socket发送消息)
2008/09/06 Python
Python实现抓取网页并且解析的实例
2014/09/20 Python
python动态加载包的方法小结
2016/04/18 Python
python处理Excel xlrd的简单使用
2017/09/12 Python
Python+matplotlib实现填充螺旋实例
2018/01/15 Python
python远程连接服务器MySQL数据库
2018/07/02 Python
Pandas时间序列重采样(resample)方法中closed、label的作用详解
2019/12/10 Python
TensorFlow2.X结合OpenCV 实现手势识别功能
2020/04/08 Python
python+selenium+chromedriver实现爬虫示例代码
2020/04/10 Python
Django集成MongoDB实现过程解析
2020/12/01 Python
雅诗兰黛旗下走天然植物路线的彩妆品牌:Prescriptives
2016/08/14 全球购物
波兰运动鞋网上商店:e-Sporting
2018/02/16 全球购物
财务会计人员岗位职责
2013/11/30 职场文书
迷你西餐厅创业计划书范文
2013/12/31 职场文书
大学班长的职责
2014/01/27 职场文书
供应链金融服务方案
2014/05/25 职场文书
计算机应用专业自荐信
2014/07/05 职场文书
租房协议书范文
2014/08/20 职场文书
2014年辅导员工作总结
2014/11/18 职场文书
中国合伙人观后感
2015/06/02 职场文书
Pytest之测试命名规则的使用
2021/04/16 Python
vue响应式原理与双向数据的深入解析
2021/06/04 Vue.js