我正在根据HTTP请求中的信息动态分配一个数组。然后,我尝试从该Array中的数据生成某些内容-然后我console.log'd Array,所以我知道其中有数据。然而,在循环遍历它时,每个键都是不确定的。
基本上,我从REST服务器获得的每个项目都有一个ID标记,表明它们以某种方式属于同一项目。我现在将其称为“ SlotID”。
我会尽量保持简单。所以这里有一些剪裁。
let items = new Array(23); // The highest "SlotID" can be 22, and 0 isn't used.
fetch(URI)
.then(results => {
return results.json();
}).then(data => {
for (var itemKey in data.Results) {
var item = data.Results[itemKey]; // This is all just the fetch.
if (items[item.SlotID] != null) { // I'm creating a new Array for each SlotID here, and if that array is already created I'm pushing to it.
items[item.SlotID].push(item);
} else {
items[item.SlotID] = [item];
}
}
}
});
(现在通过测试调用)填充项目[1]。我确认通过console.log(items);存在一个数组;输出:
(23)[…] 1:(2)[…] 0:对象{BaseParamValue0:19,BaseParamValue1:21,BaseParamValue2:23,...} 1:对象{BaseParamValue0:10,BaseParamValue1:10,BaseParamValue2:17,…} 长度:2 :数组[] 长度:23 :[
所以我现在基本上有了一个对象数组。
for (var i = 0; i < 22; i++) {
console.log(i + " " + items[i]);
}
但是,这将输出1为未定义,console.log(items [1])也输出未定义。为什么?