1-JavaScript设计模式——commonUtils工具库之多维数组的遍历

来源:互联网 发布:二进制安装mysql详解 编辑:程序博客网 时间:2024/06/05 04:35

在学习 JavaScript 设计模式之前,我们先做一个 commonUtils 工具库,以便于后期的学习和使用。


 commonUtils 工具库包括:多维数组遍历,继承函数,接口类及其验证。


本章为多维数组的遍历 代码如下:

/*  对于如下多维数组,该如何遍历呢?      其实方法很简单——递归;    对于存在 “无规律的层级关系” 的成员的遍历,也就是 “树状结构” 的成员的遍历,我们应该立刻想到递归*/var arr = [62,31,[45,[16,85]]];// 多维数组

// 为 Array 原型对象添加一个 each 遍历方法Array.prototype.each = function(fn){  try{    // 判断遍历方法入口条件    // 当数组的长度大于0的时候 && 传递的参数必须为函数    if(this.length > 0 && typeof fn === 'function'){            // 判断 this.i 成员是否存在,如果不存在,则创建this.i 作为数组下标      this.i || (this.i = 0);            // 开始循环遍历      while(this.i < this.length){        // 获得数组的元素        var item = this[this.i];                // 判断当前元素是否为数组        if(item && item.constructor === Array){          // 如果当前元素为数组,则进行递归操作          item.each(fn);        }else{          // 如果当前元素不是数组(那就是一个非数组的最终元素),则将该元素作为参数传递给fn函数          fn.call(item,item);// 第一个参数写啥都行,因为 fn函数 不需要绑定任何作用域        }        this.i ++; // 每遍历一个元素,数组下标加1      }      this.i = null;// 释放内存 垃圾回收机制回收变量    }  }catch(e){    throw new Error('something is error...');  }  return this;};

var arr = [62,31,[45,[16,85]]];// 多维数组arr.each(function(item){  alert(item);});
// 结果:62 31 45 16 85


原创粉丝点击