我正在使用 <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"
},
]
}
]