typescript - คุณจะจัดเรียง Observable<Item[]> ใน Angular 6 พร้อมกับ rxjs 6 ได้อย่างไร?
ฉันแค่อยากจะจัดเรียงข้อมูลใน Observable ของประเภทคลาสของฉันที่ชื่อว่า 'Category' ดังนั้น Observable
ดังนั้นฉันจึงอัปเกรดเป็น Angular6 และ rxjs6 พร้อมกับมัน ปัญหาหนึ่งที่อาจเป็นเรื่องง่ายเกี่ยวกับ Typescript ที่ฉันไม่รู้คือฉันจะทำการ 'sort' แบบนี้ได้อย่างไร:
sort((x,y) => x.description < y.description ? -1 : 1)
ภายในของ Angular6 ใหม่? ฉันเคยทำสิ่งนี้ในเวอร์ชัน 5
var response = this.http.get<Category[]>(this.endpoint);
.map((result: Response) => this.alphabetize(result));
alphabetize = (result: Response) => this.Categories = result.json()
.sort((x,y) => x.description < y.description ? -1 : 1)
และมันทำงานได้ดี ตอนนี้ใน HttpCLIENTModule และ HttpClient ที่ Angular ต้องการให้คุณใช้ มันง่ายขึ้น:
var data = this.http.get<Category[]>(this.endpoint);
ฉันแค่ใส่เวทมนตร์ <(object)> ก่อนจุดสิ้นสุดของฉันแล้วมันก็ทำให้ฉันเอง เจ๋งมาก แต่ฉันไม่เห็นว่าคุณจะเข้าไปในวัตถุได้อย่างง่ายดายเพื่อจัดเรียงจากมันด้วย Source, Pipe, from, of ได้อย่างไร ฉันรู้ว่ามันน่าจะเป็นอะไรที่ง่าย ๆ แต่ฉันก็ไม่รู้ไวยากรณ์สำหรับมัน
คำตอบ #1
มันคือ:
this.http.get<Category[]>(this.endpoint).pipe(
map(results => results.sort(...))
);
หรือเนื่องจาก sort ทำการแก้ไขอาร์เรย์ที่มีอยู่แล้ว จึงถูกต้องตามความหมายมากกว่าที่จะให้ผลกระทบข้างเคียงใน do/tap:
this.http.get<Category[]>(this.endpoint).pipe(
tap(results => {
results.sort()
})
);
