JSFiddle - React, Tailwind, and code Playground
by coder_jedi
JavaScript
let mappings = {
"Email": "Email",
"FirstName": "First Name",
"Id": "Salesforce.Id",
"IsActive": "Salesforce.Active",
"LastName": "Last Name",
"Name": "Full Name",
"Title": "JobTitle",
"User_Team__c": "Team"
}
let data = [{
"Email": "[email protected]",
"FirstName": "Aditya",
"Id": "0054H000007Cp3iQAC",
"IsActive": true,
"LastName": "Singh",
"Name": "Aditya Singh",
"Title": "Automation Architect",
"User_Team__c": "Builder Experience"
},
{
"Email": "[email protected]",
"FirstName": "Mike",
"Id": "0054H220007Cp3iQAC",
"IsActive": false,
"LastName": "Hewitt",
"Name": "Mike Hewitt",
"Title": "Documentation Manager",
"User_Team__c": "Customer Experience"
}
];
function getKeyByValue(object, value) {
return Object.keys(object).find(key => object[key] === value);
}
let allFields = Object.values(mappings);
let otherFields = allFields.filter((field) => field.match(/^[^.]*$/));
let nestedFields = allFields.filter((field) => field.match(/\./));
let output = [];
data.map((item, index) => {
let outputObj = {};
for (let i = 0; i < otherFields.length; i++) {
let fieldName = otherFields[i];
outputObj[fieldName] = item[getKeyByValue(mappings, fieldName)];
}
for (let i = 0; i < nestedFields.length; i++) {
let fieldName = nestedFields[i];
let parent = fieldName.split(".")[0];
let child = fieldName.split(".")[1];
if (!outputObj.hasOwnProperty(parent)) {
outputObj[parent] = new Object();
outputObj[parent][child] = item[getKeyByValue(mappings, fieldName)];
} else
outputObj[parent][child] = item[getKeyByValue(mappings, fieldName)];
}
output.push(outputObj);
})
console.log(output);