javascript - 如何将数组映射到Angular 8中的新单个对象?
问题描述
我正在这样做:
const rawValues = this.filterList.map(s => {
return {[s.filterLabel]: s.selectedOption}
});
filterList
变量有这种类型:
export interface SelectFilter {
filterLabel: string;
options: Observable<any>;
selectedOption: string;
}
现在rawValues
正在像这样映射:
[
{filterLabel: selectedOption},
{filterLabel: selectedOption},
{filterLabel: selectedOption}
]
所以这是我的新对象的数组,
但我想要的是一个 SINGLE 对象,所以最终结果应该是:
{
filterLabel: selectedOption,
filterLabel: selectedOption,
filterLabel: selectedOption
}
请注意,“ filterLabel
”将始终是唯一的。
我需要改变map()
什么?
解决方案
对于这个用例,不需要映射,因为它会导致创建一个不必要的新数组。只需遍历数组中的每个元素,然后将每个 filterLabel 作为新键分配给 obj,如下所示:
const obj = {};
this.filterList.forEach(s => {
obj[s.filterLabel] = s.selectedOption;
});
console.log(obj);
推荐阅读
- python - 解决 Errno 13 权限被拒绝
- python - 使用 Python 和 Notepad++ Unicode 格式的文本文件批量换词
- node.js - 使用 Google KMS 的 Node JS 中的 PDFNet 数字签名
- c# - 无法在 C#.net 中的模型类中绑定数据,将动态数据绑定到字段时出错
- sql-server - 在 VBA 中创建 SQL 视图
- python - 在标签上设置位置
- sharepoint - 如何在 o365 中获取 Micorsoft Sharepoint 列表中字符串的长度?
- python - AttributeError:模块 'typing_extensions' 没有属性 'Protocol'
- c++ - 卡在数组中的递归算法上
- postgresql - 从 MySQL 迁移到 PostgreSQL 后类似查询的 SQL 性能问题