JSFiddle - React, Tailwind, and code Playground
by jfriend00
HTML
Common properties:
<div id="results"></div>
CSS
#results {
font-family: "Courier New";
}
JavaScript
function findCommonProps(obj1, obj2) {
var map1 = {}, map2 = {};
var commonProps = [];
function isArray(item) {
return Object.prototype.toString.call(item) === "[object Array]";
}
function getProps(item, map) {
if (typeof item === "object") {
if (isArray(item)) {
// iterate through all array elements
for (var i = 0; i < item.length; i++) {
getProps(item[i], map);
}
} else {
for (var prop in item) {
map[prop] = true;
// recursively get any nested props
// if this turns out to be an object or array
getProps(item[prop], map);
}
}
}
}
// get all properties in obj1 into a map
getProps(obj1, map1);
getProps(obj2, map2);
for (var prop in map1) {
if (prop in map2) {
commonProps.push(prop);
}
}
return commonProps;
}
var data1 = {
"aaData": [
{
"serial":"LRRFNGHX",
"model":"Dell Optiplex",
"os":"Windows NT",
"man":"Dell",
"group":"558D",
"pcName":"LID93740SHD0",
"department":"HR",
"customerName":"Bill gates",
"username":"bgates",
"deployLocation":"Chicago, IL",
"currentLocation":"127.0.0.1",
"cnStatus":"Usable",
"previousModel":"Gateway",
"id":"256",
"enabled":"false"
}
]
};
var data2 = {
"team": {man: 1},
"department": {
"Automotive": "Automotive"
},
"os": {xx:[{group: 3}]},
"model": {},
"cnStatus": {
"Usable": "Usable"
}
};
document.getElementById("results").innerHTML = JSON.stringify(findCommonProps(data1, data2));