是否有一种优雅的方法可以从数组向对象添加键/值

时间:2017-01-17 11:10:48

标签: javascript angular typescript ecmascript-6

作为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等上映射。是否有另一种方法将数组映射到对象键?

1 个答案:

答案 0 :(得分:2)

你拥有的就好了。

有些人会使用reduce

let anObjectFullOfThings = things.reduce((obj, thing) => {
    obj[thing.field] = thing.humanReadable;
    return obj;
}, {});

...但这是一个品味问题,特别是因为reduce并没有真正减少任何东西,它只是在整个循环中保持相同的对象。