从另外2个对象创建对象的新数组

时间:2019-12-11 09:48:48

标签: javascript sorting

我正在尝试从其他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 }
];

3 个答案:

答案 0 :(得分:2)

您可以将fieldsvalue中的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);