【问题标题】:How to iterate over JavaScript object when value of a value can be object?当值的值可以是对象时,如何迭代 JavaScript 对象?
【发布时间】:2018-04-23 07:49:02
【问题描述】:

已编辑的问题。感谢@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

【问题讨论】:

  • 听说过递归吗?
  • 使用 lodash.js。它有某种扁平化功能
  • @WiktorZychla 实际上我已经完全忘记了它。抱歉耽误您的时间!

标签: javascript json object


【解决方案1】:

经过努力,我创建了一个在任何对象上循环的函数: 这肯定会迭代你想要多少级别 请看一下

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>

【讨论】:

  • 这个很好看啊
猜你喜欢
  • 2016-03-01
  • 2022-07-14
  • 2018-11-29
  • 1970-01-01
  • 1970-01-01
  • 2021-12-20
  • 1970-01-01
  • 1970-01-01
  • 2011-05-05
相关资源
最近更新 更多