从对象数组

时间:2016-12-21 21:04:33

标签: javascript arrays object ecmascript-6

这可能是重复的,但在我搜索的任何地方,我似乎只能找到想要创建对象数组的人。 基本上我试图实现相反的目的,将对象数组的某些值拉出到对象中。它有点扭曲我的头,所以你们中的任何一个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',
}

就像我说的任何帮助都会很棒!欢呼声。

2 个答案:

答案 0 :(得分:2)

Array#map将数组中的每个对象放入一个新对象中,field作为属性的键,值,即属性的值。然后使用spread syntaxObject#assign

将新对象数组合并到对象

const arr = [
 { field: 'name', value: 'sam', isRequired: true },
 { field: 'email', value: 'sam@dummyemail.net', isRequired: true },
 { field: 'message', value: 'hey', isRequired: false },
];
  
const result = Object.assign({}, ...arr.map(({ field, value }) => ({ [field]: value })));

console.log(result);

答案 1 :(得分:1)

您可以将数组映射到像这样的对象

var array = [
 { field: 'name', value: 'sam', isRequired: true },
 { field: 'email', value: 'sam@dummyemail.net', isRequired: true },
 { field: 'message', value: 'hey', isRequired: false },
];
var object = {};
array.forEach(x => {
  object[x.field] = x.value;
});
console.log(object);