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 相关文章推荐
JQuery的Ajax请求实现局部刷新的简单实例
Feb 11 Javascript
js获得当前时区夏令时发生和终止的时间代码
Feb 23 Javascript
javascript匿名函数实例分析
Nov 18 Javascript
js点击文本框弹出可选择的checkbox复选框
Feb 03 Javascript
js弹出窗口返回值的简单实例
May 28 Javascript
AngularJS指令详解及示例代码
Aug 16 Javascript
浅谈JS中的反柯里化( uncurrying)
Aug 17 Javascript
关于Vue.nextTick()的正确使用方法浅析
Aug 25 Javascript
p5.js临摹动态图形实现方法详解
Oct 23 Javascript
angular异步验证防抖踩坑实录
Dec 01 Javascript
关于Vue中$refs的探索浅析
Nov 05 Javascript
前端学习——JavaScript原生实现购物车案例
Mar 31 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中神奇的fastcgi_finish_request
2011/05/02 PHP
基于PHP 面向对象之成员方法详解
2013/05/04 PHP
PHP内核探索之解释器的执行过程
2015/12/22 PHP
PHP+mysql实现的三级联动菜单功能示例
2019/02/15 PHP
实例化php类时传参的方法分析
2020/06/05 PHP
js模拟实现Array的sort方法
2007/12/11 Javascript
来自国外的页面JavaScript文件优化
2010/12/08 Javascript
再谈javascript图片预加载技术(详细演示)
2011/03/12 Javascript
javascript学习笔记(十六) 系统对话框(alert、confirm、prompt)
2012/06/20 Javascript
php和js对数据库图片进行等比缩放示例
2014/04/28 Javascript
函数window.open实现关闭所有的子窗口
2015/08/03 Javascript
javascript实现五星评价代码(源码下载)
2015/08/11 Javascript
JavaScript知识点总结之如何提高性能
2016/01/15 Javascript
js鼠标按键事件和键盘按键事件用法实例汇总
2016/10/03 Javascript
源码分析Vue.js的监听实现教程
2017/04/23 Javascript
Vue2.0 axios前后端登陆拦截器(实例讲解)
2017/10/27 Javascript
JS基于贪心算法解决背包问题示例
2017/11/27 Javascript
原生js实现公告滚动效果
2021/01/10 Javascript
Electron-vue开发的客户端支付收款工具的实现
2019/05/24 Javascript
对layui数据表格动态cols(字段)动态变化详解
2019/10/25 Javascript
JavaScript 如何计算文本的行数的实现
2020/09/14 Javascript
Python3中多线程编程的队列运作示例
2015/04/16 Python
python通过ssh-powershell监控windows的方法
2015/06/02 Python
django 按时间范围查询数据库实例代码
2018/02/11 Python
python奇偶行分开存储实现代码
2018/03/19 Python
numpy返回array中元素的index方法
2018/06/27 Python
python版飞机大战代码分享
2018/11/20 Python
Python日志无延迟实时写入的示例
2019/07/11 Python
Django获取应用下的所有models的例子
2019/08/30 Python
Django+python服务器部署与环境部署教程详解
2020/03/30 Python
Python爬虫爬取微博热搜保存为 Markdown 文件的源码
2021/02/22 Python
法国发饰品牌:Alexandre De Paris
2018/12/04 全球购物
出国导师推荐信
2014/01/16 职场文书
父母对孩子的寄语
2014/04/09 职场文书
行政助理岗位职责范本
2015/04/11 职场文书
2015年扫黄打非工作总结
2015/05/13 职场文书