首页 > 解决方案 > 如何将数组映射到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()什么?

标签: javascriptangularangular8

解决方案


对于这个用例,不需要映射,因为它会导致创建一个不必要的新数组。只需遍历数组中的每个元素,然后将每个 filterLabel 作为新键分配给 obj,如下所示:

const obj = {};
this.filterList.forEach(s => {
  obj[s.filterLabel] = s.selectedOption;
});

console.log(obj);

推荐阅读