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 相关文章推荐
14款经典网页图片和文字特效的jQuery插件-前端开发必备
Aug 25 Javascript
解决jquery插件:TypeError:$.browser is undefined报错的方法
Nov 21 Javascript
用window.onerror捕获并上报Js错误的方法
Jan 27 Javascript
【经典源码收藏】基于jQuery的项目常见函数封装集合
Jun 07 Javascript
bootstrap模态框示例代码分享
May 17 Javascript
详解Vue 非父子组件通信方法(非Vuex)
May 24 Javascript
jquery仿京东商品放大浏览页面
Jun 06 jQuery
JS 中document.write()的用法和清空的原因浅析
Dec 04 Javascript
解决Vue 浏览器后退无法触发beforeRouteLeave的问题
Dec 24 Javascript
微信小程序表单验证WxValidate的使用
Nov 27 Javascript
vue中实现点击按钮滚动到页面对应位置的方法(使用c3平滑属性实现)
Dec 29 Javascript
原生js实现移动小球(碰撞检测)
Dec 17 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中一个控制字符串输出的函数
2006/10/09 PHP
swfupload 多文件上传实现代码
2008/08/27 PHP
在mysql数据库原有字段后增加新内容
2009/11/26 PHP
Ext.data.PagingMemoryProxy分页一次性读取数据的实现代码
2010/04/07 PHP
PHP使用Redis长连接的方法详解
2018/02/12 PHP
兼容FireFox 的 js 日历 支持时间的获取
2009/03/04 Javascript
一些技巧性实用js代码小结
2009/10/14 Javascript
javascript比较两个日期相差天数的方法
2015/07/24 Javascript
AngularJS 实现按需异步加载实例代码
2015/10/18 Javascript
vue.extend实现alert模态框弹窗组件
2018/04/28 Javascript
微信小程序模拟cookie的实现
2018/06/20 Javascript
在小程序中使用canvas的方法示例
2018/09/17 Javascript
微信小程序使用for循环动态渲染页面操作示例
2018/12/25 Javascript
mocha的时序规则讲解
2019/02/16 Javascript
PHPStorm中如何对nodejs项目进行单元测试详解
2019/02/28 NodeJs
ES6 Promise对象的应用实例分析
2019/06/27 Javascript
jQuery操作事件完整实例分析
2020/01/10 jQuery
javascript中的offsetWidth、clientWidth、innerWidth及相关属性方法
2020/05/14 Javascript
python strip()函数 介绍
2013/05/24 Python
在Python的Django框架中simple-todo工具的简单使用
2015/05/30 Python
简单实现python数独游戏
2018/03/30 Python
解决pandas 作图无法显示中文的问题
2018/05/24 Python
学习python可以干什么
2019/02/26 Python
matplotlib命令与格式之tick坐标轴日期格式(设置日期主副刻度)
2019/08/06 Python
Python更新所有已安装包的操作
2020/02/13 Python
django正续或者倒序查库实例
2020/05/19 Python
Django CBV模型源码运行流程详解
2020/08/17 Python
AmazeUI折叠式卡片布局,整合内容列表、表格组件实现
2020/08/20 HTML / CSS
介绍一下Transact-SQL中SPACE函数的用法
2015/09/01 面试题
Java面试题:为什么要用Java
2012/05/11 面试题
函授毕业自我鉴定
2013/12/19 职场文书
大学活动邀请函
2014/01/28 职场文书
主持人婚宴答谢词
2014/01/28 职场文书
银行柜员工作心得体会
2016/01/23 职场文书
演讲稿之感恩老师(三篇范文)
2019/09/06 职场文书
《分一些蚊子进来》读后感3篇
2020/01/09 职场文书