gpt4 book ai didi

javascript - Angular 2 - 对从可观察对象发送的对象中的属性值求和

转载 作者:太空狗 更新时间:2023-10-29 17:47:03 25 4
gpt4 key购买 nike

在我的 service.component.j 中,我从 http 调用返回一个 Student 数组的可观察对象。学生对象有一个属性叫做年龄,

学生.ts

export class Student {
id: number;
name: string;
age:number;
}

服务.componnet.js

getStudents (): Observable< Student[]> 

在作为上述可观察对象的观察者的 studentManagement.component.ts 中,我想对学生的年龄求和。我知道我可以在源代码中放置一个 sum() (这是不太受欢迎的,因为我还需要在页面中显示学生的其他信息,例如 id、姓名、个人年龄。)或从 _studentList 计算它。除了这两个,还有别的办法吗?

private _studentList:Student[]=[];

.subscribe(
returnedStudents => {
console.log(returnedStudents);
this._studentList = returnedStudents;
},
erroMsg => this._errorMessage = erroMsg
)

最佳答案

你可以使用 map在 Observable 上返回总和。

getStudents().map(arr => arr.reduce((a, b) => a + b.age, 0));

这里我们将内部数组缩减为学生年龄属性的总和。现在我们有一个 Observable<number> ,它将发出年龄的总和。

如果你想同时显示:

getStudents (): Observable< Student[]> {
return this.http.get(/*...*/).share();
}

getAgeSum(): Observable<number> {
return this.studentsObservable
.map(arr => arr.reduce((a, b) => a + b.age, 0));
}

我们必须在这里调用 share,这样 Observable 就变热了,并且不会做两次 HTTP 请求。

关于javascript - Angular 2 - 对从可观察对象发送的对象中的属性值求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37109928/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com