在循环打字稿中声明数组数组

时间:2017-12-18 14:16:07

标签: javascript arrays angular typescript

在我的应用程序上,我有一个日期对象,其中包含时间数组 控制台日志输出如下

32: {
1514160000: Array [ 1200, 1500 ],
1514764800: Array [ 1200, 1500 ],
1515369600: Array [ 1200, 1500 ],
1515974400: Array [ 700, 1200, 1500 ],
1516579200: Array [ 700, 1200, 1500 ],
}

有了这些数据,我已经实现了循环来创建一个新的日期数组,其中包含时间和工作者ID,如下所示(类似于此)

1514160000 :[
1200 : [32,40,56],
1500 : [32,40],
],
1514764800: [
1200 : [32,40,56],
1500 : [32,40],
]

我已经为此编写了以下代码,我想通过动态分配日期然后再创建一个数组来创建日期数组。

let allDates :any = [];
      for(let pid in this.allAvailableProviders)
      {
        console.log(pid);
        for(let slotDate in this.allAvailableProviders[pid]){
          if(!Array.isArray(allDates[slotDate])){
            let allDates[slotDate] :any = [];
          }
        }
      }

其中allAvailableProviders是对象

它让我在ng服务上出现以下错误

'=' expected

我该怎么做?

2 个答案:

答案 0 :(得分:2)

您只是初始化阵列。没有赋值或需要let:

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

答案 1 :(得分:1)

let语句后面跟一个变量名,而不是表达式。

您应该将外部数组定义为正确的类型,而不是any。你知道它是一个数组数组。

  let allDates: any[][] = [];
  for(let pid in this.allAvailableProviders)
  {
    console.log(pid);
    for(let slotDate in this.allAvailableProviders[pid]){
      if(!Array.isArray(allDates[slotDate])){
        // You'd get an error if you assigned something that is not an array.
        // because you specified the type correctly
        allDates[slotDate] = [];
      }
    }
  }