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 =...