這個問題在這里已經有了答案: 在 ES6 中按鍵過濾物件屬性 (30 個回答) 4 小時前關閉。
我有一個包含一些資料的 observable。
我還有一個方法可以獲取 1 個特定欄位:
getField(fieldName: string) {
return this.response$.asObservable().
pipe(
map(data => data[fieldName]),
take(1)
)
}
------------------------------------------------
getFirstNameGroup(): Observable<any> {
return this.service.getField('first_name'); // returns current field's properties as an object
}
我不僅要傳遞一個欄位名稱,還要傳遞多個欄位名稱,如下所示:
getFields(fieldNames: string[]) {
return this.response$.asObservable().
pipe(
map(data => fieldNames.map(field => data[field])),
take(1)
)
}
------------------------------------------------
getPersonName(): Observable<any> {
// returns an array of objects where indexes 0 and 1 are instead of first_name and last_name
return this.service.getFields(['first_name', 'last_name']);
}
我只是不知道我應該改變什么map()才能得到一個像(或像這樣)的物件:
{
first_name: {...},
last_name: {...}
}
謝謝 :)
uj5u.com熱心網友回復:
試試這個:
map(data => fieldNames.reduce((prev, curr) => ({...prev, [curr]: data[curr]}), {} as any)),
uj5u.com熱心網友回復:
您可以使用物件字面量語法。像這樣:
map(data => ({
first_name: data.fs,
last_name: data.ls
}))
或者如果您更喜歡在物件上索引欄位
map(data => ({
first_name: data[fs]
last_name: data[ls]
}))
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/387495.html
