JavaScript:如何从数组数组中打印所有键和值?

时间:2016-03-19 18:47:13

标签: javascript arrays

我在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,不确定为什么不能使用长度循环。有什么想法吗?

2 个答案:

答案 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;
&#13;
&#13;