首页 > 解决方案 > 从对象数组动态创建对象

问题描述

我有一个对象数组,我需要将它们变成一个新的单个对象。

这是数组的结构:

class QueryFilter {
    filterName;
    filterValue;
}

let filter1 = new QueryFilter();
filter1.filterName = "SpamScore";
filter1.filterValue = 5;

let filter2 = new QueryFilter();
filter2.filterName = "Pages";
filter2.filterValue = 50;

let filters = [filter1, filter2];

我需要将过滤器变成这样的对象:

let newObj = {
    SpamScore: 5,
    Pages: 50
};

我一直在尝试使用地图和分配,但我无法弄清楚我应该这样做的方式。这需要某种类型的反射还是有简单的方法?

标签: javascript

解决方案


您可以使用Array#reduce

filters.reduce((r, i) => {
  r[i.filterName] = i.filterValue;
  return r;
}, {});

这个想法是循环filters对象,并在每次迭代中,将键值分配给结果。


推荐阅读