作为angular2 / typescript项目的一部分,我有一个对象数组。对象包含一组来自数据库的键/值对。然后将其映射到ui端的表(使用ag-grid-ng2
)。
表格的标题是动态的,并在数据库中设置。
我的一项任务是将键/值数组映射到单个对象,如下所示:
const things = [
{
field: 'some_table_header',
humanReadable: 'Some table header'
}
];
变成:
const anObjectFullOfThings = {
some_table_header: 'Some table header'
};
我目前觉得我的代码可以更加优雅和简洁,即:
let anObjectFullOfThings = {};
things.forEach((thing) => {
anObjectFullOfThings[thing.field] = thing.humanReadable;
});
我觉得必须有更好的东西,即以其他方式我在Object.keys等上映射。是否有另一种方法将数组映射到对象键?
答案 0 :(得分:2)
你拥有的就好了。
有些人会使用reduce
:
let anObjectFullOfThings = things.reduce((obj, thing) => {
obj[thing.field] = thing.humanReadable;
return obj;
}, {});
...但这是一个品味问题,特别是因为reduce
并没有真正减少任何东西,它只是在整个循环中保持相同的对象。