在 RxJS 中使用 Map 运算符转换数据
Tranform Data Using Map Operator in RxJS
我有一个第三方 API,return 的数据如下 -
它已从 Angular 服务使用 HttpClient.
调用
const someObject = {
employees:[
{name:"XYZ",age:30},
{name:"ABC",age:28},
]
}
我想将此数据转换为以下结构
姓名、年龄原样,描述将根据姓名和年龄计算
{
name :
age :
description: //calculate based on name and age
},
{
name :
age :
description: //calculate based on name and age
}
上面的结构将被输入到一些 Interface
中,这最终是 return 从我的 Angular service
编辑的
如何使用 RxJS
执行此操作?
任何人都可以帮助我,因为我正在努力解决这个问题
最终,我的 Angular 服务会 return 数据如上结构?
编辑:
根据收到的回复,我尝试了以下操作:
return this.http.get<any>(url).pipe(
map(data => data.employees),
map(employees =>{
values.map(employee =>{
console.log('individual value =',employee);
return{
employee,
description:employee.name + "" + employee.age
}
})
})
)
但是当这个 Observable 被订阅时,我得到的值是 undefined
。
是否因为第二个地图运算符 map(employees
没有 returning 任何东西?
我怎样才能使它成为 return 由 inner map 构造的对象?
所以基本上你想添加和处理额外的 属性:
假设这是您服务中的方法:
getData(){...}
那么你可以简单地这样做:
const employees$ = this.service.getData().pipe(
map(data => data.employees),
map(employees => employees.map(employee => {
const description = `My name is ${employee.name}`;
return {...employee, description};
}
)
);
然后在 employees$
中,您可以观察到具有您想要的结构的员工
你可以试试这样的
of([
{name:"XYZ",age:30},
{name:"ABC",age:28},
]).pipe(
map(employees =>
employees.map(
elem => {return {
"name": elem.name,
"age": elem.age,
"description": 'blablabla'
}}
)
)
).subscribe(employees => console.log(employees))
现在只需更改描述中的字符串即可。
希望我能帮到你
const someObject = {
employees:[
{name:"XYZ",age:30},
{name:"ABC",age:28},
]
}
let description = 'description goes here';
let result = someObject.employees.map( o => { return {...o, ...{description} } });
console.log(result);
我有一个第三方 API,return 的数据如下 -
它已从 Angular 服务使用 HttpClient.
const someObject = {
employees:[
{name:"XYZ",age:30},
{name:"ABC",age:28},
]
}
我想将此数据转换为以下结构 姓名、年龄原样,描述将根据姓名和年龄计算
{
name :
age :
description: //calculate based on name and age
},
{
name :
age :
description: //calculate based on name and age
}
上面的结构将被输入到一些 Interface
中,这最终是 return 从我的 Angular service
如何使用 RxJS
执行此操作?
任何人都可以帮助我,因为我正在努力解决这个问题
最终,我的 Angular 服务会 return 数据如上结构?
编辑:
根据收到的回复,我尝试了以下操作:
return this.http.get<any>(url).pipe(
map(data => data.employees),
map(employees =>{
values.map(employee =>{
console.log('individual value =',employee);
return{
employee,
description:employee.name + "" + employee.age
}
})
})
)
但是当这个 Observable 被订阅时,我得到的值是 undefined
。
是否因为第二个地图运算符 map(employees
没有 returning 任何东西?
我怎样才能使它成为 return 由 inner map 构造的对象?
所以基本上你想添加和处理额外的 属性:
假设这是您服务中的方法:
getData(){...}
那么你可以简单地这样做:
const employees$ = this.service.getData().pipe(
map(data => data.employees),
map(employees => employees.map(employee => {
const description = `My name is ${employee.name}`;
return {...employee, description};
}
)
);
然后在 employees$
中,您可以观察到具有您想要的结构的员工
你可以试试这样的
of([
{name:"XYZ",age:30},
{name:"ABC",age:28},
]).pipe(
map(employees =>
employees.map(
elem => {return {
"name": elem.name,
"age": elem.age,
"description": 'blablabla'
}}
)
)
).subscribe(employees => console.log(employees))
现在只需更改描述中的字符串即可。 希望我能帮到你
const someObject = {
employees:[
{name:"XYZ",age:30},
{name:"ABC",age:28},
]
}
let description = 'description goes here';
let result = someObject.employees.map( o => { return {...o, ...{description} } });
console.log(result);