当值的值可以是对象时,如何迭代JavaScript对象?

时间:2018-04-23 07:49:03

标签: javascript json object

编辑问题。感谢@WiktorZychla唤醒我星期一大脑的递归。以下代码现在正在运行。

如果我在这里有一个像这样的虚拟对象:

const dummy = {
    a: 1,
    b: 2,
    c: {
        d: 3,
        e: {
            f: 4
        }
    },
    g: 5
};

我可以通过以下方式进行迭代:

const xavier = (value, s) => {
  for (const key in value) {
    if (value.hasOwnProperty(key)) {
      if (typeof value[key] === 'object' && value[key] !== null) {
        xavier(value[key], s + '.' + key);
      } else {
        console.log(s + '.' + key + ' ' + value[key]);
      }
    }
  }
};

现在打印以下内容:

.a 1
.b 2
.c.d 3
.c.e.f 4
.g 5

1 个答案:

答案 0 :(得分:0)

在努力工作后,我创建一个循环任何对象的函数:  这肯定会迭代你想要多少级别 请看看它

arr = [];
obj = {
  a: 1,
  b: 2,
  c: {
    d: 3,
    e: {
      f: 4
    }
  }
}
function iter(x){
for(i in x){
if(typeof(x[i])=="object"){
iter(x[i]);
}else{

arr.push(x[i]);

}}}
iter(obj);
document.write(arr.join(','));
<!DOCTYPE html>
<html>
<body></body>
</html>