通過我的 observable,testData$我收到如下所示的資料:
[
{
type: 'userInfo',
data: [
{
username: 'Sara',
age: 27,
},
{
username: 'Max',
age: 31,
},
{
username: 'Kim',
age: 26,
},
],
},
{
type: 'cars',
data: [
{
type: 'Mercedes'
},
],
},
];
從testData$我想獲取 Max 的年齡并將其存盤在maxAge$. 到目前為止,我已經嘗試過這段代碼:
public maxAge$ = this.testData$.pipe(
map(x => x.filter(obj => obj.type === 'userInfo')),
map(value => value[0]),
pluck('data'),
);
它回傳這樣的資料陣列:
[
{
username: 'Sara',
age: 27,
},
{
username: 'Max',
age: 31,
},
{
username: 'Kim',
age: 26,
},
]
但是現在我不知道如何從這里繼續獲取ageMax的值。在這種情況下,重要的是不要只選擇第二個陣列元素,data因為順序可能會有所不同。我能做什么?
uj5u.com熱心網友回復:
const users = [
{
username: 'Sara',
age: 27,
},
{
username: 'Max',
age: 31,
},
{
username: 'Kim',
age: 26,
},
]
cons maxage = users.find(user=>user.username=='MAX').age;
public maxAge$ = this.testData$.pipe(
map(x => x.find(obj => obj.type === 'userInfo').data),
map(users => users.find(user=>user.username==='Max').age)
);
uj5u.com熱心網友回復:
您可以將 RxJSmap運算子與Array#find方法一起使用
const testData = [{ type: 'userInfo', data: [{ username: 'Sara', age: 27, }, { username: 'Max', age: 31, }, { username: 'Kim', age: 26, }, ], }, { type: 'cars', data: [{ type: 'Mercedes' }, ], }, ];
const maxAge = testData
.find(item => item.type === 'userInfo')
.data
.find(item => item.username === 'Max')
.age;
console.log(maxAge);
所以流看起來像
public maxAge$ = this.testData$.pipe(
map((testData: any) => testData
.find(item => item.type === 'userInfo')
.data
.find(item => item.username === 'Max')
.age
)
);
如果您不知道屬性是否始終可用(這可能會導致undefined錯誤),您可以使用可選的鏈接運算子?.。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/384549.html
標籤:javascript 数组 有角的 目的 rxjs
