数组不能正常工作,奇怪的输出显示

时间:2017-12-19 06:54:59

标签: javascript arrays angular typescript

在我的angular 4应用程序中,我有一个名为allAvailableProviders的对象,如下所示 其中71,72是提供者ID,然后是时间戳,然后是24小时格式的时间

71: {…}
  1514678400: […]
    0: 800
    1: 1300
  1515283200: […]
    0: 800
    1: 1300
  1515888000: […]
    0: 800
    1: 1300
72: {…}
  1514678400: […]
    0: 800
    1: 1300
  1515283200: […]
    0: 800
    1: 1300
  1515888000: […]
    0: 800
    1: 1300

我写了一个函数来创建一个带有上面对象的新数组,如下所示

1514678400: []
  800: []
   0: 71
   1: 72
  1300: []
   0: 71
   1: 73

以下是我的代码

let allDates = [];
  for(let pid in this.allAvailableProviders)
  {
    for(let slotDate in this.allAvailableProviders[pid]){
      if(!Array.isArray(allDates[slotDate])){
        allDates[slotDate] = new Array();
      }
      for(let spots in this.allAvailableProviders[pid][slotDate]){
        if(!Array.isArray(allDates[slotDate][spots])){
          allDates[slotDate][spots] = new Array();
        }
        allDates[slotDate][spots].push(pid);
      }

    }
  }
  console.log(allDates)

在控制台上记录其显示以下输出

Array [ <10 empty slots>, … ]

[…]
[0…99999999]
[100000000…199999999]
[200000000…299999999]
[300000000…399999999]
[400000000…499999999]
[500000000…599999999]
[600000000…699999999]
[700000000…799999999]

我不确定这里发生了什么,但是当我尝试使用jquery构建它时,它可以正常工作但不能使用javascript和typescript

有没有办法获得所需的输出?

1 个答案:

答案 0 :(得分:1)

我只编译了你的代码,但看起来像是:

for(let pid in this.allAvailableProviders)

应该是:

for(let pid of this.allAvailableProviders)

在JavaScript / TypeScript中,for - of循环是用于迭代数组中项目的循环。 for - in循环迭代键(在数组的情况下,索引)......

var arr = ['A', 'B', 'C', 'D'];

// 0, 1, 2, 3
for (let item in arr) {
    console.log(item);
}

// A, B, C, D
for (let item of arr) {
    console.log(item);
}