js中的遍历问题

FrankQiu
  • 283

简单说一下,就是类似Js中一个对象里面有很多属性,其中一个属性是数组,然后我想遍历这个对象所有的属性包括数组中的每个数据的属性。说得比较简单,大家应该都能理解的。谢谢各位大神

回复
阅读 2k
7 个回答

直接使用for循环或者each都可以的啊!for each

for(i in obj){
    if(obj.hasOwnProperty(i)){
        if(obj[i].__proto__ === Array.prototype){
            for(j of obj[i])
                console.log(j)
        }else{
            console.log(obj[i])
        }
    }
}

对每个属性做格式检查不就得了。
碰到数组就再遍历数组就完了啊。

// 遍历对象所有可枚举的属性
for (let attr in obj) {
    if (obj.hasOwnProperty(attr)) {
        // 如果是属性是数组,遍历数组
        if (Array.isArray(attr)) {
            attr.forEach((item) => {
                // ....
            })
        }
    }
}
function search(obj){
    for(var i in obj){
        var e = obj[i];
        if(e.constructor === Array || e.constructor === Object){
            search(e);
        }else{
            console.log(e);
        }
    }
}
var obj = {arr1:[1,2,3,4,5],f:1,g:2,h:3,arr2:['a','b','c']};
search(obj);

很粗糙,是这个意思吗..
不过这种很容易挂掉
`
var arr3 = [];
var obj = {arr1:[1,2,3,4,5],f:1,g:2,h:3,arr2:['a','b','c'],arr3:arr3};
arr3.push(obj);
`
一旦有互相嵌套的,他就挂了

var obj={
    a:"one",
    b:"two",
    c:"three",
    d:"four"
};
for(key in obj){
    console.log(key + ":" +obj[key]);
}
//输出:
/*
a:one
b:two
c:three
d:four
*/

最简单的例子就这样。
对象里面的都是键值对,你遍历对象里的键,再用键去取得对应的值。

判空,然后判断对象是不是数组,依次遍历。

宣传栏