即使数组中有数据,数组中的项目也未定义

时间:2019-05-17 14:05:28

标签: javascript arrays multidimensional-array

我正在根据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])也输出未定义。为什么?

0 个答案:

没有答案