JSFiddle - React, Tailwind, and code Playground
Code to check for changes in 2 arrays of object
by Nalin Sajwan
HTML
<script src="https://cdn.jsdelivr.net/npm/[email protected]/lodash.min.js"></script>
JavaScript
let newObj = {
"fund.name": "QFG Precision Growth Portfolio",
"fund.manager": "Quetico Financial Asset Managers",
"contact.phone": "1800 734-3863",
"contact.email": "[email protected]",
"contact.web": "https://qfg.co",
"date.feechange": "June 30, 2019",
"fund.series": "Series B",
"mfee.old": "1.50",
"mfee.new": "1.25",
"Text_1": "",
"Text_2": "",
"fund.volatality": "High",
"perf.years": "8",
"date.snapshot": "March 31, 2019",
"perf.1kvalue": "1,800",
"perf.return": "6.45",
"expense.rate": "1.75",
"expense.1kval": "17.50"
};
let oldObj = {
"fund.name": "QFG Precision Growth Portfolio",
"fund.manager": "Quetico Financial Asset Managers",
"fund.series": "Series B",
"fund.volatality": "High",
"contact.phone": "1800 734-3863",
"contact.email": "[email protected]",
"contact.web": "https://qfg.co",
"date.feechange": "June 30, 2019",
"date.snapshot": "March 31, 2019",
"mfee.old": "1.50",
"mfee.new": "1.25",
"perf.years": "8",
"perf.1kvalue": "1,800",
"perf.return": "6.45",
"expense.rate": "1.76",
"expense.1kval": "17.50",
"Text2": ""
};
let newArr = []
let oldArr = []
for (let name in newObj) {
newArr.push({
name: name,
value: newObj[name]
})
}
for (let name in oldObj) {
oldArr.push({
name: name,
value: oldObj[name]
})
}
function getChanges(oldArr, newArr) {
let changed = [];
oldArr.forEach(o => {
let nR = newArr.find(n => {
return o.name === n.name;
})
if (nR !== undefined) {
if (!_.isEqual(nR, o)) {
changed.push(o);
}
} else {
changed.push(o);
}
})
newArr.forEach(n => {
let oR = oldArr.find(o => {
return o.name === n.name;
})
if (oR === undefined) {
changed.push(n);
}
})
return changed;
};
console.log("\nnewArr ==> ", newArr);
console.log("\noldArr ==> ", oldArr);
let changed =...