首页 > 解决方案 > 如何使用插值访问数组索引?

问题描述

我想使用插值来访问数组索引处的特定项目,但它给了我这个错误:“TypeError:无法设置未定义的属性'0'。”

当数组未定义时会发生这种情况,但我已经在构造函数中定义了它。

  1. parsedData 看起来像
[
    {
      "studyID": "12345",
      "date": "Thu Jul 18 2019 16:05:58 GMT-0700",
      "sex": "f",
      "dateOfBirth": "1987-01-02",
      "minHz": "25.0",
      "maxHz": "55.0",
      "session": [ 
        {
          "incr": "33.2",
          "decr": "34.7"
        },
        {
          "incr": "34.0",
          "decr": "30.8"
        }
      ],
      "average": "31.5",
      "variance": "2.3"
    },

但已被字符串化并解析为对象。

  1. 我有一个名为 dateObjects 的数组,它应该存储日期。例如,new Date('Thu Jul 18 2019 16:05:58 GMT-0700') 将位于索引 0。这发生在迭代中。
for (var i = 0; i < this.parsedData.length; i++) {
        this.dateObjects[i] = new Date(this.parsedData[i].date);
    }
  1. 我的 HTML 代码:
 <div class="table" *ngFor="let data of parsedData; index as i"> 
Date: {{ this.dateObjects[i] | date:'fullDate'}}
</div>

我希望它打印出 dateObjects 数组中的日期,但它会导致错误:TypeError: Cannot set property '0' of undefined。

标签: javascriptarraysangular

解决方案


因为您已经在遍历 parsedData 并将它们存储在数组(dataObjects)中,所以我认为您应该在 HTML 中遍历 dataObjects 而不是 parsedData

<div class="table" *ngFor="let data of this.dataObjects; index as i"> 
Date: {{ data | date:'fullDate'}} // here data will be your each array element
</div>

推荐阅读