这是我的代码:
var places = { };
var x = 0;
for (var k in data.na)
{
var contentId = data.na[k].contentId;
var contentType = data.na[k].contentType;
var key = contentType + '_' + contentId;
var address = data.na[k].address;
var topics = data.na[k].topic;
var research_theme = data.na[k].research_theme;
places[key]["na" + x]= [address, topics, research_theme];
x++;
}
然而它说Uncaught TypeError:无法设置属性' na0'未定义的 为什么?我想拥有na0,na1等等。我怎么能这样做?
答案 0 :(得分:1)
这一行:
places[key]["na" + x]= [address, topics, research_theme];
正在尝试在na0
上设置places[key]
属性,但key
上的places
中没有名称属性(这是一个完全空白的对象),所以places[key]
为undefined
,导致错误。
如果您的目标是让places[key]
成为您为其指定属性的对象,请在其上方添加:
if (!places[key]) {
places[key] = {};
}
...如果它还不存在,则在尝试在其上设置属性之前创建它。 (例如,我假设contentType + '_' + contactId
可能在多个循环迭代中具有相同的值。)
但是,确定你想要的对象有时会有na0
,有时只有na1
,有时只有na2
等等吗?如果您只想为每个na
创建一个key
数组,则需要执行此操作:
if (!places[key]) {
places[key] = {na: []};
}
places[key].na.push([address, topics, research_theme]);
......但我猜你的最终目标。只是觉得值得一记。