在数组 o Angular 和 Typescript 中保存数据时出现问题
Problem with saving data in array o Angular and Typescript
问题:我的基准测试 foreach loop
没有将所有值保存到数组中,相反,它保存了一个并给出错误 null。如果我删除推送并改为 console.log
,它会显示所有结果。
onGetResults() {
this.accountService.getBenchmark(this.user.id)
.pipe(first())
.subscribe(
benchmarks => {
this.benchmarks = benchmarks;
const benchmarkDates: any[] = null;
const benchmarkValues: any[] = null;
this.benchmarks.forEach(data => {
let becnchmarkDate: any = data.createdAt;
benchmarkDates.push(becnchmarkDate);
benchmarkValues.push(data.benchmarkResults);
});
const allData = {
label: benchmarkDates,
data: benchmarkValues,
fill: true
}
this.benchmarkChart[0] = new Chart({
type: 'radar',
data: allData,
options: {
elements: {
line: {
borderWidth: 3
}
}
}
});
}
);
}
出于一些干净的代码和性能原因,我只是尝试在函数外部设置数组声明,
const benchmarkDates: any[] = null;
const benchmarkValues: any[] = null;
onGetResults() {
this.accountService.getBenchmark(this.user.id)
.pipe(first())
.subscribe(
benchmarks => {
this.benchmarks = benchmarks;
this.benchmarks.forEach(data => {
benchmarkDates.push(data.createdAt;);
benchmarkValues.push(data.benchmarkResults);
});
const allData = {
label: benchmarkDates,
data: benchmarkValues,
fill: true
}
this.benchmarkChart[0] = new Chart({
type: 'radar',
data: allData,
options: {
elements: {
line: {
borderWidth: 3
}
}
}
});
}
);
}
问题:我的基准测试 foreach loop
没有将所有值保存到数组中,相反,它保存了一个并给出错误 null。如果我删除推送并改为 console.log
,它会显示所有结果。
onGetResults() {
this.accountService.getBenchmark(this.user.id)
.pipe(first())
.subscribe(
benchmarks => {
this.benchmarks = benchmarks;
const benchmarkDates: any[] = null;
const benchmarkValues: any[] = null;
this.benchmarks.forEach(data => {
let becnchmarkDate: any = data.createdAt;
benchmarkDates.push(becnchmarkDate);
benchmarkValues.push(data.benchmarkResults);
});
const allData = {
label: benchmarkDates,
data: benchmarkValues,
fill: true
}
this.benchmarkChart[0] = new Chart({
type: 'radar',
data: allData,
options: {
elements: {
line: {
borderWidth: 3
}
}
}
});
}
);
}
出于一些干净的代码和性能原因,我只是尝试在函数外部设置数组声明,
const benchmarkDates: any[] = null;
const benchmarkValues: any[] = null;
onGetResults() {
this.accountService.getBenchmark(this.user.id)
.pipe(first())
.subscribe(
benchmarks => {
this.benchmarks = benchmarks;
this.benchmarks.forEach(data => {
benchmarkDates.push(data.createdAt;);
benchmarkValues.push(data.benchmarkResults);
});
const allData = {
label: benchmarkDates,
data: benchmarkValues,
fill: true
}
this.benchmarkChart[0] = new Chart({
type: 'radar',
data: allData,
options: {
elements: {
line: {
borderWidth: 3
}
}
}
});
}
);
}