这可能是重复的,但在我搜索的任何地方,我似乎只能找到想要创建对象数组的人。 基本上我试图实现相反的目的,将对象数组的某些值拉出到对象中。它有点扭曲我的头,所以你们中的任何一个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',
}
就像我说的任何帮助都会很棒!欢呼声。
答案 0 :(得分:2)
Array#map
将数组中的每个对象放入一个新对象中,field
作为属性的键,值,即属性的值。然后使用spread syntax和Object#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);