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);
});*/

 

转载于:https://www.cnblogs.com/julygift/p/7235544.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值