在打字稿中操作数组

时间:2021-02-13 10:35:18

标签: arrays typescript dictionary filter

我正在使用 <ngx-charts-area-chart> 图表。

我收到了那个数组:activitat (users 代表按 created_day 分组的最近 7 天的新用户注册):

[
  {
    "name": "users",
    "series": [
      {
        "value": "2",
        "name": "2020-01-02T00:00:00.000Z"
      },
      {
        "value": "3",
        "name": "2020-01-03T00:00:00.000Z"
      },
      {
        "value": "4",
        "name": "2020-01-05T00:00:00.000Z"
      },
      {
        "value": "1",
        "name": "2020-01-07T00:00:00.000Z"
      }
    ]
  },
  {
    "name": "posts",
    "series": [
      //more data.
    ]
  }
]

我想表示该信息,但在 7 天的范围内。所以我需要创建一个 {"value": 0, "name": new Date(index i)} 的新数组。然后我想复制名称日期对应的 value != 0 的对象。

为此,我生成了一个 7 天的数组:

 const endDate: Date = new Date();
 let startDate: Date = new Date();
 startDate.setDate((new Date().getDate())- 7);
 const countDays= 7;//days
 let result = [];
 for(let i = 0; i < countDays; i++) {
     let dateStart: Date = new Date();
     dateStart.setDate((new Date().getDate())- 7);
     dateStart.setDate(dateStart.getDate() + i + 1);
     const objectValueName = {"value": 0, name: dateStart};
     result.push(myObject);
}
let newObject = {"name":"users", series:result};

现在我想通过 activitat 迭代 users 过滤并与我的 newObject 的每个日期进行比较。仅在日期相等的每个位置更新值“0”。

ngOnInit() { 
    this.dashboardService.activitat().subscribe((activitat: any[]) => {
         this.newObjectUsers= activitat.filter(x => x.name == "users").map((users) => {
              let item2 = this.bondia.find(i2 => i2.name === users.name);
              return item2  ? { ...users, ...item2 } : users;
          });
    });
}

}

我想获得这个:

[
  {
    "name": "users",
    "series": [
      {
        "value": "0",
        "name": "2020-01-01T00:00:00.000Z"
      },
      {
        "value": "2",
        "name": "2020-01-02T00:00:00.000Z"
      },
      {
        "value": "3",
        "name": "2020-01-03T00:00:00.000Z"
      },
      {
        "value": "0",
        "name": "2020-01-04T00:00:00.000Z"
      },
      {
        "value": "4",
        "name": "2020-01-05T00:00:00.000Z"
      },
      {
        "value": "0",
        "name": "2020-01-06T00:00:00.000Z"
      },
      {
        "value": "1",
        "name": "2020-01-07T00:00:00.000Z"
      },
    ]
  }
]

0 个答案:

没有答案