• JavaScript 遍历多维数组


    基于ECMAScript5提供遍历数组的forEach方法仅能遍历一维数组,没有提供循环遍历多维数组的方法,所以实现如下遍历多维数组的each方法,以此遍历多维数组。

    注意:此处新增了遍历空数组与对象的显示方式

    //遍历多维数组方法实现
    Array.prototype.each = function (fn) {
        try {
            //定义计数器
            const ZERO = 0;
            this.i = ZERO;
            //判断数组非空且参数的构造器为函数
            if (this.length > this.i && fn.constructor === Function) {
                while (this.length > this.i) {
                    var item = this[this.i];
                    //如果当前元素是数组
                    if (item && item.constructor === Array) {
                        if (item.length > ZERO) {
                            item.each(fn);
                        } else {
                            //空数组显示"[]", 而非空白
                            fn.call(item, "[]");
                        }
                    } else {//当前元素非数组,此处扩展遍历对象,以键值对方式显示,而非[object Object]
                        if (item && typeof item === "object") {
                            //非空对象
                            if (Object.keys(item).length > ZERO) {
                                for (const key in item) {
                                    fn.call(item, key + " : " + item[key]);
                                }
                            } else {
                                //空对象
                                fn.call(item, "{}");
                            }
                        } else {//其余元素,包括对象类型的null
                            fn.call(item, item);
                        }
                    }
                    this.i++;
                }
                //销毁计数器,回收内存
                delete this.i;
            }
        } catch (e) {
            console.log("error happened in printing multiple-dimension array. error message : " + e);
            throw e;
        }
        return this;
    };
    var array = ["中国", "Charles", 0, ["A", "B", "C"], ["D", ["E", "F"], "G"], {
        name: "ITACHI",
        gander: "Male"
    }, [], null, undefined, false];
    //遍历多维数组
    array.each(function (item) {
        alert(item);
    });
    
    //遍历一维数组
    /*array.forEach(function (item, index, arr) {
        alert(item);
    });*/
  • 相关阅读:
    javascript之void0
    Sublime之OS X Command Line
    iOS之Monkey
    iOS之在成员函数中使用Block
    mac之javascriptcore
    国内成功码农的发展轨迹
    HTML之表格初步
    ClientSide JavaScript Timeline
    javascript正则表达式
    同源策略
  • 原文地址:https://www.cnblogs.com/itachy/p/7235544.html
Copyright © 2020-2023  润新知