javascript - 有没有一种优雅的方法将键/值添加到数组中的对象

标签 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 等。是否有其他方法将数组映射到对象键?

最佳答案

你拥有的一切都很好。

有些人会使用reduce:

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

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

关于javascript - 有没有一种优雅的方法将键/值添加到数组中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41695606/

相关文章:

javascript - Electron 渲染器过程: When Should I Clean IPC Listeners

javascript - 如何使用 Google Tag Manager Click Event 获取隐藏输入的属性

Angular 2 : How to find out what was previous page url when using angular2 routing

angular - 如何修复错误错误 : Uncaught (in promise): NullInjectorError: StaticInjectorError(AppModule)[HomeComponent -> HttpHeaders]

css - 如何从组件 CSS 中选择 HTML 标签

angular2 observable.fromEvent 与按钮单击

javascript - 为什么 'this' 在此 TypeScript 片段中引用 'window'?

javascript - 禁用空输入的发送按钮

javascript - jQuery attr() 不支持属性或方法 'replace'

javascript - 如何将 php 或 javascript 数组中的引号添加到 json