我正在尝试从其他2个对象中的数据创建一个新的对象数组(其中一个是数组)。 我拥有的第一个对象是一个简单的键:值一,其中包含记录值。
const records = {
title: 'My title',
body: 'bla bla bla',
created_at: 'some date'
};
第二个对象是一个数组,其中包含字段属性,例如类型和必需字段。
const fields = [
{
name: 'title',
type: 'TextField',
mandatory: true
},
{
name: 'body',
type: 'RichTextField',
mandatory: false
},
{
name: 'created_at',
type: 'DateField',
mandatory: true
}
];
我试图在第一个对象上搜索每个键,并在第二个数组中获得其他属性。基本上我想要这样的东西:
const newArray= [
{ name: title, value: 'My title', type: 'TextField', mandatory: true },
{ name: body, value: 'bla bla bla', type: 'RichTextField', mandatory: false },
{ name: created_at, value: 'some date', type: 'DateField', mandatory: true }
];
答案 0 :(得分:2)
您可以将fields
与value
中的records
映射。
const
records = { title: 'My title', body: 'bla bla bla', created_at: 'some date' },
fields = [{ name: 'title', type: 'TextField', mandatory: true }, { name: 'body', type: 'RichTextField', mandatory: false }, { name: 'created_at', type: 'DateField', mandatory: true }];
result = fields.map(o => Object.assign({}, o, { value: records[o.name] }));
console.log(result);
答案 1 :(得分:1)
尝试使用javascript方法。这不仅是唯一的方法。您也可以尝试其他运算符。
const fields = [{ name: 'title', type: 'TextField', mandatory: true },
{ name: 'body', type: 'RichTextField', mandatory: false },
{ name: 'created_at', type: 'DateField', mandatory: true }
];
const records = {
title: 'My title',
body: 'bla bla bla',
created_at: 'some date'
};
let newArray = [];
fields.forEach(field => {
newArray.push({
name: field.name,
value: records[field.name],
type: field.type,
mandatory: field.mandatory
})
})
console.log(newArray);
答案 2 :(得分:1)
尝试一下:
const fields = [{ name: 'title', type: 'TextField', mandatory: true },
{ name: 'body', type: 'RichTextField', mandatory: false },
{ name: 'created_at', type: 'DateField', mandatory: true }
];
const records = {
title: 'My title',
body: 'bla bla bla',
created_at: 'some date'
};
let res = fields.map(val => {
return { ...val, value: records[val.name] }
})
console.log(res);