循环通过javascript嵌套对象返回undefined

时间:2015-08-03 16:45:30

标签: javascript loops object

我正在尝试遍历嵌套对象,但我一直在返回undefined。

我的对象:

var ltColumns = {

"col1": {data: "productCode", title: "Product Code", width: "7%" },

"col2": {data: "brand", title: "Brand", width: "5%"}
};

我的循环:

for (var key in ltColumns) {
  console.log(key.data);
}

在这种情况下,我试图控制记录"数据"每个嵌套对象的属性。但是,我一直未定义'。有人可以帮忙吗?

谢谢!

3 个答案:

答案 0 :(得分:2)

将您的循环更改为:

for (var key in ltColumns) {
    console.log(ltColumns[key].data);
}

jsFiddle example

您的for...in循环会在每次迭代时将属性名称返回key,此处col1col2。因此,key.data语句本身将返回undefined,因为col1col2都不是对象 - 它们是ltColumns的属性。因此,您需要同时使用keyltColumns来获取col1col2属性的值,因为ltColumns是实际对象。

答案 1 :(得分:2)

使用此:

    console.log(ltColumns[key].data);

答案 2 :(得分:0)

for (var key in ltColumns) {
   console.log(key.data); // key is just a string, not the property itself
                          // "col1".data, "col2".data, etc. 
                          // and these strings do not have `data` property
}

你想要access the properties。因此object[property]因为点符号是不可能的。