在返回未定义的javascript嵌套对象中循环

Looping through javascript nested object returning undefined

本文关键字:对象 循环 嵌套 javascript 返回 未定义      更新时间:2023-09-26

我试图在嵌套对象中循环,但一直返回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);
}

在这种情况下,我尝试控制台记录每个嵌套对象的"data"属性。然而,我一直被"定义不清"。有人能帮忙吗?

谢谢!

将循环更改为:

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

jsFiddle示例

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

使用此:

    console.log(ltColumns[key].data);
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
}

您想要访问属性。因此CCD_ 14,因为点表示法是不可能的。