【发布时间】:2017-05-07 09:56:51
【问题描述】:
这可能是重复的,但在我搜索的任何地方,我似乎只能找到想要创建对象数组的人。 基本上我试图实现相反的效果,将对象数组的某些值拉到一个对象中。这有点让我头疼,所以你们中的任何一位 JS 大师如果能帮我一把,将非常感激!
基本上我有一个这样的对象数组:
[
{ field: 'name', value: 'sam', isRequired: true },
{ field: 'email', value: 'sam@dummyemail.net', isRequired: true },
{ field: 'message', value: 'hey', isRequired: false },
]
他们以这种方式分开是因为我通过字段进行验证。
在验证阶段之后,我想将字段和值属性映射到新对象中的名称值对,例如:
{
name: 'sam',
email: 'sam@dummyemail.net',
message: 'hey',
}
就像我说的任何帮助都会很棒!干杯。
【问题讨论】:
-
循环遍历数组的每个元素。获取
element.field和element.value并将它们用作结果对象中新属性的名称和值。其中哪一部分很难做到? -
var result = array.reduce((final, obj) => (final[obj.field] = obj.value, final), {}); -
我猜只是实现,我会使用 Object.assign 然后在其中使用 map 循环吗?另外,如果这是重复的,您能否指出我找不到的原始问题?谢谢
-
这是
reduce的用例,正如上面评论中所建议的那样。 -
谢谢@Guedes,是的。有谁知道为什么现在很多人似乎更喜欢使用 ES6 的 Object.assign 方法?我很少看到在这种情况下提到 reduce?
标签: javascript arrays object ecmascript-6