我无法围绕如何在彼此的循环中嵌套以列出多维对象中的所有属性。
var list = {};
list.one = {
a: true,
b: false,
c: true
};
list.two = {
a: true,
b: false,
c: true
};
var listing = function(obj) {
for (prop in obj) {
document.write(prop+"<br>");
for (props in obj) { //not sure what to write here
document.write("---"+props+"<br>");
}
}
listing(list);
如何编写for循环以获得类似的内容:
one
---true
---false
---true
two
---true
---false
---true
每个连续嵌套for ... in循环是否需要更复杂,测试对象是否确实是多维的?我很丢失。
答案 0 :(得分:0)
您需要枚举内部对象obj[prop]
:
function listing(obj) {
for (var prop in obj) {
document.write(prop+"<br>");
for (var nestedProp in obj[prop]) {
document.write("---"+nestedProp+": "+obj[prop][nestedProp]+"<br />");
}
}
}
每个连续嵌套for ... in循环是否需要更复杂,测试对象是否确实是多维的?
不,如果您事先知道尺寸的数量,则不需要对其进行测试,只能嵌套循环。对于任意数量的级别,您将使用递归函数,该函数需要测试参数是否为可枚举对象是否为“叶子”值。
答案 1 :(得分:0)
只需要遍历内部循环中的内部对象。见下文:
var list = {};
list.one = {
a: true,
b: false,
c: true
};
list.two = {
a: true,
b: false,
c: true
};
var listing = function(outerObj) {
for (var outerProp in outerObj) {
var innerObj = outerObj[outerProp];
document.write(prop+"<br>");
for (var innerProp in innerObj) {
document.write("---"+props+"<br>");
}
}
listing(list);