You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular 4中无法设置undefined的属性'0'问题求助

问题分析与解决方案

从你描述的现象和代码来看,问题的核心是**dataTuple二维数组没有提前完成完整的初始化**:

  • 当i=0时,this.dataTuple[0]应该是已经存在的数组(可能你之前手动初始化过这一行),所以给它的任意j索引赋值都没问题;
  • 但当i≥1时,this.dataTuple[i]是undefined,此时尝试给undefined[j](比如j=0)赋值,就会触发“无法给undefined的属性赋值”的错误。

修复后的代码

你需要在外层循环中,先为每个i对应的行创建一个空数组,再在内层循环中填充数据:

// 先初始化整个dataTuple的结构
this.dataTuple = [];
for(let i=0; i<this._devices.length; i++ ) { 
  // 为第i行创建一个空数组,避免后续赋值时出现undefined
  this.dataTuple[i] = [];
  for(let j=0;j<this._devices[i].devstatus.length;j++) { 
    this.dataTuple[i][j] = [new Date(this._devices[i].devtime[j]).getTime() + this.indiaUTC , this._devices[i].devstatus[j]]; 
  } 
}

额外优化建议

如果想让代码更简洁易读,也可以用数组的map方法来实现,它会自动帮你完成二维数组的初始化,避免手动循环时遗漏行的创建步骤:

this.dataTuple = this._devices.map(device => {
  return device.devstatus.map((status, j) => {
    return [new Date(device.devtime[j]).getTime() + this.indiaUTC, status];
  });
});

内容的提问来源于stack exchange,提问作者lakshmipathi B

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:08:34