微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我该如何使用角度为9的打字稿访问对象数组中的值?

如何解决我该如何使用角度为9的打字稿访问对象数组中的值?

我正在尝试从quickbase中的表中检索值。

image of quickbase table

这是我到目前为止所拥有的... 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);
      }

此日志返回

image of array of object that was logged into console

我如何提取 {value:“ 1.0.0”}和 {value:“ 1.0.5”}

解决方法

尝试动态生成字段,这样您就不必担心versionnotes的索引是哪个

从对象中,我们可以看到

[
  {
     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)
    });
  }

See this demo on stackblitz

NB .flat()功能仅在es2019中可用。这篇文章将帮助您解决所有挑战Typescript flatMap,flat,flatten doesn't exist on type any[]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。