首页 > 解决方案 > 在 Angular 中处理大对象(打字等)

问题描述

使用 http 我得到了一个巨大的对象数组。这个对象包含很多值,其中一些我什至不关心。

对象(...等于我不需要的不同值):

id: '45678',
attributes: {
  title: 'This is a title!'
  ...
},
resources: [
  {url: 'www.facebook.com', type: 'social media', ...},
  {url: 'www.instagram.com', type: 'social media', ...},
],
...

假设我有一个组件需要显示上述值并忽略其余部分 ( ...)。这里的最佳做法是什么?

我是否创建一个新数组,映射旧数组并仅推送一个仅包含我需要的数据的操作对象?在 Angular 中键入和创建接口怎么样,我需要覆盖所有对象吗?

编辑:

return this.http.get(this.url)
  .pipe(
    map((a: any) => {
      const products = [];
      a.items.map(obj => {
        products.push({id: obj.id, resources: obj.resources, attributes: obj.attributes});
      })
      return products;
    })
  );

标签: angulartypescript

解决方案


如果您使用的是 Angular HttpClient,您可能会得到一个Observable<YOUR_OBJ_TYPE[]>

您可以只使用 rxjsmap运算符,然后映射数组对象,应该如下所示:

httpClient.get<YOUR_OBJ_TYPE[]>('URL')
     .pipe(map((res:YOUR_OBJ_TYPE[])=> res.map(
      (obj: YOUR_OBJ_TYPE) => {
        id: obj.id,
        attributes: obj.attributes,
        resources: obj.resources,
        ...
})))

推荐阅读