假设我有一个javascript对象,有没有一种方法可以遍历所有的原始子属性?
例如,如果我有一个对象
{
foo: 17,
bar: {
a: 2,
b: 7
}
}我想遍历foo、bar.a和bar.b。
请记住,我更喜欢在Object.keys()上迭代,而不是使用for/in循环,尽管我确信我可以将任何for/in循环响应转换为Object.keys()迭代。
发布于 2013-01-26 00:34:55
您可以像这样使用递归函数:
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);它会生成输出:
foo : 17
a : 2
b : 7 关于此函数的注释。它在任何对象上递归。例如,如果对象中有一个数组,则该数组中的每一项都将获得单独的行。
因此,对于以下对象:
var x = {
foo: 17,
bar: {
a: 2,
b: 7
},
foobar: [1,2,3]
}输出将显示:
foo : 17
a : 2
b : 7
0 : 1
1 : 2
2 : 3 显然,有一些方法可以处理这一问题,但您需要调整函数以满足您的需求。
发布于 2013-01-26 00:25:21
更新:你可以这样做(取自下面的链接):
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?
你可以在上面的帖子中找到你的答案。
https://stackoverflow.com/questions/14525821
复制相似问题