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

Javascript 有没有一种优雅的方法可以从数组向对象添加键/值,javascript,angular,typescript,ecmascript-6,Javascript,Angular,Typescript,Ecmascript 6,作为angular2/typescript项目的一部分,我有一个对象数组。这些对象包含一组来自数据库的键/值对。然后映射到ui端的表(使用ag-grid-ng2) 表的标题是动态的,并在数据库中设置 我的一项任务是将键/值数组映射到单个对象,如下所示: const things = [ { field: 'some_table_header', humanReadable: 'Some table header' } ]; 变成: const anObjectFull

作为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等。是否有其他方法将数组映射到Object keys?

您所拥有的一切都很好

有些人会使用
reduce

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

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

您所拥有的一切都很好

有些人会使用
reduce

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

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

了解你关于品味的观点。它实际上非常适合实现的其余部分。谢谢你说出你对口味的看法。它实际上非常适合实现的其余部分。谢谢