遍历对象:编写一段js代码实现对对象obj={x:1,y:{a:2,b:{c:3,d:4}}}所有值的遍历

var obj = {
    x: 1,
    y: {
        a: 2,
        b: {
            c: 3,
            d: 4
        }
    }
};
//获取对象所有的key值
function getKeys(obj) {
    //es6新语法  Object.prototype.toString()方法精准判断参数值属于哪种类型
    if(Object.prototype.toString.call(obj) === "[object Object]") {
        var arr = [];
        var arrValue = [];
        var arrKeyValue = [];
        (function getKeysFn(o, char) {
            for(var key in o) {
                //判断对象的属性是否需要拼接".",如果是第一层对象属性不拼接,否则拼接"."
                var newChar = char == "" ? key : char + "." + key;
                if(Object.prototype.toString.call(o[key]) === "[object Object]") {
                    //如果属性对应的属性值仍为可分解的对象,使用递归函数继续分解,直到最里层
                    getKeysFn(o[key],newChar);
                } else {
                    arrValue.push(o[key]);
                    arr.push(newChar);
                    arrKeyValue.push(newChar + "=" + o[key]);
                }
            }
        })(obj,"");
        console.log(arr);
        console.log(arrValue);
        console.log(arrKeyValue);
    } else {
        console.log("传入的不是一个真正的对象哦!");
    }

}
getKeys(obj);

执行结果如下

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值