繁体   English   中英

通过比较 object 值的动态数组中的 object 键生成新的 object 数组

[英]Generate new array of object from comparing object keys in dynamic array of object values

const payload = [
  {
    ControlType: 'Label',
    Property: 'FirstName'
  },
  {
    ControlType: 'DateTime',
    Property: 'CreatedOn'
  },
  {
    ControlType: 'Label',
    Property: 'Price'
  },
  {
    ControlType: 'Label',
    Property: 'SubTotal'
  },
  {
    ControlType: 'Label',
    Property: 'Total'
  }
];

const object1 = {
  ContactId: null,
  ContactName: null,
  CreatedOn: '05-06-2020 12:37 PM',
  CustId: '4069241-BR02',
  CustName: 'ABC',
  FirstName: 'Test',
  LastName: 'Test',
  SurName : 'Test',
  Total:500,
  Price: 200,
  SubTotal:400,
  Tax:100,
  Qty : 2
};

// 我需要下面的结果

const newResult = [
  {
    FirstName: 'Test',
    ControlType: 'Label'
  },
  {
    CreatedOn: '05-06-2020 12:37 PM',
    ControlType: 'DateTime'
  },
  {
    Price: 200,
    ControlType: 'Label'
  },
  {
    SubTotal: 400,
    ControlType: 'Label'
  },
  {
    Total: 500,
    ControlType: 'Label'
  }
];

您需要遍历数组的项目,为每个项目添加属性中的键的值,在 object1 中找到,然后删除属性键:

payload.map(function(item){
    item[item.Property] = object1[item.Property];
    delete item["Property"];
    return item;
})

你可以map它:

 var payload = [ { ControlType: 'Label', Property: 'FirstName' }, { ControlType: 'DateTime', Property: 'CreatedOn' }, { ControlType: 'Label', Property: 'Price' }, { ControlType: 'Label', Property: 'SubTotal' }, { ControlType: 'Label', Property: 'Total' }]; var object1 = { ContactId: null, ContactName: null, CreatedOn: '05-06-2020 12:37 PM', CustId: '4069241-BR02', CustName: 'ABC', FirstName: 'Test', LastName: 'Test', SurName: 'Test', Total:500, Price: 200, SubTotal:400, Tax:100, Qty: 2}; var result = payload.map(({Property, ...rest})=>({[Property]:object1[Property], ...rest})); console.log(result);

使用map和解构

 const convert = (arr, obj) => arr.map(({ ControlType, Property }) => ({ [Property]: obj[Property], ControlType, })); const payload = [ { ControlType: "Label", Property: "FirstName", }, { ControlType: "DateTime", Property: "CreatedOn", }, { ControlType: "Label", Property: "Price", }, { ControlType: "Label", Property: "SubTotal", }, { ControlType: "Label", Property: "Total", }, ]; const object1 = { ContactId: null, ContactName: null, CreatedOn: "05-06-2020 12:37 PM", CustId: "4069241-BR02", CustName: "ABC", FirstName: "Test", LastName: "Test", SurName: "Test", Total: 500, Price: 200, SubTotal: 400, Tax: 100, Qty: 2, }; console.log(convert(payload, object1));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM