自定义方法,模仿each遍历多维数组

来源:互联网 发布:马云是如何开创淘宝的 编辑:程序博客网 时间:2024/06/05 15:12
var arr = [1,2,3,[4,[5,[6]]]];    //console.log(arr.length);    //自己实现一个each方法,遍历多维数据    Array.prototype.each = function(fn){      try{        //目的:遍历数据的每一项,计数器,记录当前遍历元素的位置        this.i || (this.i=0);   //var i=0;        //严谨判断,什么时候去走each核心方法        //1,当数据的元素大于0 && 传递的参数必须为函数        if (this.length > 0 && fn.constructor == Function) {          //循环遍历数据的每一项           while(this.i < this.length){            //获取数组的每一项            var e = this[this.i];            //如果当前元素都获取到了,并且当前元素是一个数组            if (e && e.constructor == Array) {              //直接传值操作              e.each(fn);            }else{              //如果不是数组,那就是一个单个元素              //这的目的就是把数组的当前元素传递给fn函数,并让函数执行              //fn.apply(e,[e])              fn.call(e,e);            }            this.i++;          }          //释放内存,垃圾回收机制回收变量          this.i = null;        }      }      catch(ex){      }      return this;    }    arr.each(function(item){      console.log(item);    });

0 0
原创粉丝点击