首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有一种好的方法来遍历Javascript对象的所有子属性?

有没有一种好的方法来遍历Javascript对象的所有子属性?
EN

Stack Overflow用户
提问于 2013-01-26 00:17:21
回答 2查看 1.7K关注 0票数 3

假设我有一个javascript对象,有没有一种方法可以遍历所有的原始子属性?

例如,如果我有一个对象

代码语言:javascript
复制
{
  foo: 17,
  bar: {
    a: 2,
    b: 7
  }
}

我想遍历foo、bar.a和bar.b。

请记住,我更喜欢在Object.keys()上迭代,而不是使用for/in循环,尽管我确信我可以将任何for/in循环响应转换为Object.keys()迭代。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-26 00:34:55

您可以像这样使用递归函数:

代码语言:javascript
复制
var x = {
    foo: 17,
    bar: {
        a: 2,
        b: 7
    }
}

function parseObject(something) {
    var keys = Object.keys(something);
    for (var i = 0; i < keys.length; i++) {
        if (typeof something[keys[i]] === 'object') parseObject(something[keys[i]])
        else console.log(keys[i] + " : " + something[keys[i]]);
    }
}
parseObject(x);

它会生成输出:

代码语言:javascript
复制
foo : 17 
a : 2 
b : 7 

关于此函数的注释。它在任何对象上递归。例如,如果对象中有一个数组,则该数组中的每一项都将获得单独的行。

因此,对于以下对象:

代码语言:javascript
复制
var x = {
    foo: 17,
    bar: {
        a: 2,
        b: 7
    },
    foobar: [1,2,3]    
}

输出将显示:

代码语言:javascript
复制
foo : 17 
a : 2 
b : 7 
0 : 1 
1 : 2 
2 : 3 

显然,有一些方法可以处理这一问题,但您需要调整函数以满足您的需求。

票数 7
EN

Stack Overflow用户

发布于 2013-01-26 00:25:21

更新:你可以这样做(取自下面的链接):

代码语言:javascript
复制
for (var key in validation_messages) {
   var obj = validation_messages[key];
   for (var prop in obj) {
      alert(prop + " = " + obj[prop]);
   }
}

这可能是以下内容的副本:

Iterate through object properties

How to Loop through plain JavaScript object with objects as members?

你可以在上面的帖子中找到你的答案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14525821

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档