javascript - 从对象数组动态创建对象
问题描述
我有一个对象数组,我需要将它们变成一个新的单个对象。
这是数组的结构:
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
};
我一直在尝试使用地图和分配,但我无法弄清楚我应该这样做的方式。这需要某种类型的反射还是有简单的方法?
解决方案
您可以使用Array#reduce
:
filters.reduce((r, i) => {
r[i.filterName] = i.filterValue;
return r;
}, {});
这个想法是循环filters
对象,并在每次迭代中,将键值分配给结果。
推荐阅读
- javascript - 国际转换值(货币)在 Textinput 中不起作用
- hierarchical-clustering - 在没有 sklearn 的情况下实现 HAC 算法
- c# - 如何清除 c# 程序中的终端?
- python - 是否复制了多处理管理器注册类型的参数?
- angular - 从 Angular 中的 API 更新深层嵌套表单数组
- wordpress - 如何在点击时打开 wordpress 子菜单并在页面加载后保持打开状态?
- ios - 无法在 swift 中为侧边菜单自定义 tableView
- ui-automation - 在空手道中包含重复元素的表上执行通配符操作?
- php - 如何使用 AZURE 人脸识别 Rest API?
- javascript - Webpack Module Federation 将共享库的名称更改为数字