多维数组

<script>
    var arr = [1,2,3,[4,[5,[6]]]]; // arr.length

    Array.prototype.each = function(fn){
        try{
            //1 目的: 遍历数组的每一项 //计数器 记录当前遍历的元素位置
            this.i || (this.i=0);  //var i = 0 ;
            //2 严谨的判断什么时候去走each核心方法
            // 当数组的长度大于0的时候 && 传递的参数必须为函数
            if(this.length >0 && fn.constructor == Function){
                // 循环遍历数组的每一项
                while(this.i < this.length){    //while循环的范围
                    //获取数组的每一项
                    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){
            // do something
        }
        return this ;
    }

    arr.each(function(item){
        console.log(item);
    });
</script>

 http://blog.csdn.net/wangyuchun_799/article/details/38460515

posted @ 2017-04-21 12:00  最爱小虾  阅读(190)  评论(0编辑  收藏  举报