我在JS中有一个Array数组:
var myArray = new Array();
myArray[["abc1"]["efg1"]] = 123;
myArray[["abc1"]["efg2"]] = 124;
如何从上面的数组中打印所有键和所有值?
预期结果是:
abc1 efg1 123
abc1 efg2 124
我可以用这样打印值123:
alert(myArray[["abc1"]["efg1"]]);
我尝试打印alert(myArray.length);
,但它显示长度为0,不确定为什么不能使用长度循环。有什么想法吗?
答案 0 :(得分:1)
假设你有一个像
这样的对象var a={abc:{efg:[123,124]}}
您可以执行以下操作:
for (n in a)
for (m in a[n])
a[n][m].forEach(function(v,i){console.log(n,m,i,v);})
获取输出:
abc efg 0 123
abc efg 1 124
但是,正如我上面所说,我只是假设......
这是一个适用于此特定对象结构的输出函数。如果您不确定要打印的对象,最好使用
之类的东西JSON.stringify(a)
通过这种方式,您将获得JSON格式的完整对象结构
{"abc":{"efg":[123,124]}}
答案 1 :(得分:1)
假设您有一个对象,您可以迭代键并检查该值是否为对象,然后迭代该对象。如果没有,请打印路径和值。
function iter(object, path) {
path = path || [];
Object.keys(object).forEach(function (k) {
if (typeof object[k] === 'object') {
iter(object[k], path.concat(k));
return;
}
document.write(path.concat(k).join(' ') + ': ' + object[k] + '<br>');
});
}
var object = {};
object["abc1"] = {};
object["abc1"]["efg1"] = 123;
object["abc1"]["efg2"] = 124;
iter(object);
document.write('<pre>' + JSON.stringify(object, 0, 4) + '</pre>');
&#13;