Javascript 有没有一种优雅的方法可以从数组向对象添加键/值
作为angular2/typescript项目的一部分,我有一个对象数组。这些对象包含一组来自数据库的键/值对。然后映射到ui端的表(使用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
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
并没有真正减少任何东西时,它只是在整个循环中保持相同的对象。了解你关于品味的观点。它实际上非常适合实现的其余部分。谢谢你说出你对口味的看法。它实际上非常适合实现的其余部分。谢谢