angular - 在 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;
})
);
解决方案
如果您使用的是 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,
...
})))
推荐阅读
- javascript - 当我选中同一行中的复选框时,如何在输入中获取表格行数据?
- c# - C# Mongo 驱动程序错误:无法从 BsonType 'Document' 反序列化 'Int32'
- c# - Linq Query 适用于 Web 应用程序但使用 NUnit 时抛出错误
- google-apps-script - Google Apps 脚本的 if/elseif 错误
- java - java优化器是否消除除非抛出异常否则结果不被使用的代码
- vba - 使 VBA 自动接受打开的写保护文件
- javascript - 为什么每次点击按钮都会添加?
- android - Android studio cordovaRun 无法使用设备运行
- nlp - 有人可以为 Alexa Skill 的交互模型解释这种行为吗?
- pitest - 当项目没有运行 ptest 时,不会触发 Pitest 突变的质量门