javascript - 通过比较对象值动态数组中的对象键生成新的对象数组
问题描述
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'
}
];
解决方案
你可以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);
推荐阅读
- c# - 使用 WebBrowser 显示文件后,如何在 C# 中更改文件?
- pdf - Google Sheet Script (Email to PDF) 突然发送损坏的 PDF
- android - 如何确定在所有 android 设备中匹配的最佳服务器图像大小
- react-native - 使用导航堆栈在没有点击事件的情况下更改屏幕反应本机
- windows - 如何使用 Windows 命令行下载文件而无需输入代理密码?
- c# - .Net Core NullReferenceException 使用 ControllerBase.ValidationProblem()
- node.js - TypeError:无法读取未定义的属性“计数”
- python - 用于过滤列表理解中的正则表达式搜索的海象运算符
- pandoc - bookdown 书的渲染失败,pandoc 错误代码 137
- postgresql - PostgreSQL pg_dump/复制