数组.map()返回未定义

时间:2018-09-24 12:03:34

标签: arrays angular chart.js

这是我console.log时数组的结构。

-[]
  -0: Array(31)
    -0:
      -date: "2018-08-26T00:00:00-04:00"
      -registered:
        -standard: 0
        -vip: 0
      -waitlisted:
        -standard: 0
        -vip: 0

这是我的代码,用于映射日期和已注册(两个独立的数组):

this.data.map((value) => value.date);
this.data.map((value) => value.registered['standard']);

当我记录这些时,我得到一个空数组或undefined。我在做什么错了?

我想使用ChartJS将这些用于图表,其中:

this.lineChart = new Chart(lineCtx, {
  type: 'line',
  data: {
    datasets: [{
      label: (I want the dates to be the labels),
      data: (I want the list of standard registrants)
    }]...

编辑:

我已经更新了获取数据的方式以显示以下结构:

{
  "registrationHistory": [{
    "date": "2018-08-26T00:00:00-4:00",
    "registered": {
      "vip":0,
      "standard":0
    },
    "waitlisted":{
      "vip":0,
      "standard":0
  }
  {
   ,...
  }
]}

1 个答案:

答案 0 :(得分:1)

您的数组是二维的,map仅迭代第一个维,即:

-[]
  -0: Array(31)     // first dimension
    -0:             // second dimension
      -date: "2018-08-26T00:00:00-04:00"
      ...

这看起来像下面的JSON字符串:

[[{"date":"2018-08-26T00:00:00-04:00", ...}]]

由于您没有提供完整的示例,因此不可能推荐最适用的解决方案:

  • 如果您控制数据源,请删除第一个维度,因为它看起来很多余。
  • 假设您只想要第一维的第一个元素,请参考该键:

    this.data[0].map((value) => value.date);
    

如果您的数据模型比问题中揭示的要复杂,则需要找出另一种方法。