如何解决我该如何使用角度为9的打字稿访问对象数组中的值?
我正在尝试从quickbase中的表中检索值。
这是我到目前为止所拥有的... service.ts
public getNativeFields(){
let headers = new HttpHeaders().set("QB-Realm-Hostname","xxxxxx.quickbase.com").set("Authorization","QB-USER-TOKEN xxxxxx_xxx_xxxxxxxxxxxxxxxxxxxxxxxxx");
let requestBody = {
"from": this.soMetableTableId,"select": [6,7]
}
return this.httpClient.post(`${this.apiURL}/records/query?appId=${this.appId}`,requestBody,{ headers })
}
在我的 component.ts 中...
ngOnInit(): void {
let list= this.apiService.getNativeFields();
console.log("list is" );
console.log(list);
list.forEach(element=>{
this.nativeVersions.push(element);
})
console.log("native versions");
console.log(this.nativeVersions);
}
此日志返回
我如何提取 {value:“ 1.0.0”}和 {value:“ 1.0.5”}
解决方法
尝试动态生成字段,这样您就不必担心version
中notes
的索引是哪个
从对象中,我们可以看到
[
{
data: [...],fields: [...]
}
]
这些字段定义了数据结构的方式,因此我们可以通过map
运算符生成一个更简单的对象。参见下面的代码
constructor(private apiService: ApiService) {}
list$ = this.apiService.getNativeFields();
allVersions$ = this.list$.pipe(
map(list =>
(list.map(({ fields,data }) =>
data.map(item =>
fields.reduce((prev,next) => {
return { ...prev,[next.label]: item[next.id]["value"] };
},{})
)
) as any).flat()
),map(item => item.map(({ version }) => version))
);
ngOnInit() {
this.allVersions$.subscribe({
next: items => console.log(items)
});
}
NB .flat()
功能仅在es2019
中可用。这篇文章将帮助您解决所有挑战Typescript flatMap,flat,flatten doesn't exist on type any[]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。