【发布时间】:2016-12-09 17:53:49
【问题描述】:
我试图弄清楚是否有办法将此代码重写为单个对象创建:
my_array = [
{key: 1, value: "foo"},
{key: 2, value: "bar"}
];
let my_obj = {};
my_array.forEach((elem) => {
my_obj[elem.key] = elem.value;
});
我想做的是这样的:
my_array = [
{key: 1, value: "foo"},
{key: 2, value: "bar"},
];
const my_obj = ...?
有没有一种方法可以进行相当于forEach 调用的一次性转换?
【问题讨论】:
-
你可以使用
Map代替(我脑子里有一个可以工作的单行)。 -
你在描述
reduce。 -
使用reduce lke this
my_obj = my_array.reduce( (a, b)=>{ a[b.key] = b.value; return a;}, {}) -
IMO,在这种特殊情况下,常规 for 循环或 forEach 将是您仅使用内置函数可以做的最清晰的事情。如果您真的想一次性完成,我会将循环放在一个命名良好的函数中。
-
“我想要的是能够在那里使用 const” - 请注意,即使使用显示的代码,您也可以使用
const而不是let。使用const不会阻止您更改对象的内容,它只会阻止您将变量重新分配给其他对象。
标签: javascript functional-programming javascript-objects