JSFiddle - React, Tailwind, and code Playground
HTML
<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
<div class="results"></div>
JavaScript
var addedList = [],
removedList = [],
changedList = [],
changeLog = [],
path = "";
var vt1, vt2;
function logVt( options ) {
var a = options.before,
b = options.after,
name = options.name || "";
if( options.name === "" ){
vt1 = options.before;
vt2 = options.after;
}
var typeA = typeofReal(a),
typeB = typeofReal(b),
type;
var aString = (typeA === "object" || typeA === "array") ? "" : String(a) + " ";
var bString = (typeB === "object" || typeB === "array") ? "" : String(b) + " ";
if (a === undefined) {
var path = getPath(b, name, bString);
type = "added";
addedList.push({
type: type,
field: name,
path: path,
after: bString
});
}
else if (b === undefined) {
var path = getPath(a, name, aString);
console.log(path);
type = "removed";
removedList.push({
type: type,
field: name,
path: path,
before: aString
});
}
else if (typeA !== typeB || (typeA !== "object" && typeA !== "array" && a !== b)) {
var path = getPath(b, name, bString);
type = "changed";
changedList.push({
type: type,
field: name,
path: path,
before: aString,
after: bString
});
}
else {
type = "exist";
}
if (typeA === "object" || typeA === "array" || typeB === "object" || typeB === "array") {
var keys = [];
for (var i in a) {
if (a.hasOwnProperty(i)) {
keys.push(i);
}
}
for (var i in b) {
if (b.hasOwnProperty(i)) {
keys.push(i);
}
}
keys.sort();
for (var i = 0; i < keys.length; i++) {
if (keys[i] === keys[i-1]) {
continue;
}
...