我有一个第三方API,该API返回以下数据-
已使用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
,并且最终从我的Angular service
如何使用RxJS
执行此操作?
在我为此苦苦挣扎的时候,有人可以帮我吗?
最终,我的Angular服务将返回上述结构的数据吗?
编辑:
基于得到的响应,我在下面进行了尝试:
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
没有返回任何东西吗?
如何使它返回从内部地图构建的对象?
答案 0 :(得分:1)
因此,基本上,您想添加并处理其他属性:
假设这是您服务中的方法:
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$
中,您可以通过具有所需结构的员工来观察
答案 1 :(得分:1)
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);
答案 2 :(得分:0)
您可以尝试这样的事情
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))
现在只需更改描述中的字符串即可。 希望我能帮忙