in pytheas-core/src/main/resources/js/jsondiffpatch.js [97:151]
var arrayDiffByKey = function(o, n, itemKey){
var adiff, ol = o.length, nl = n.length, getKey, dcount = 0;
if (typeof itemKey == 'function') {
getKey = itemKey;
}
else {
getKey = function(item){
return item[itemKey];
}
}
for (var i = 0; i < nl; i++) {
if (typeof adiff == 'undefined') {
adiff = {
_t: 'a'
};
}
// added, changed or unchanged
adiff[getKey(n[i])] = [n[i]];
dcount++;
}
for (var i = 0; i < ol; i++) {
var key = getKey(o[i]);
if (typeof adiff == 'undefined' || typeof adiff[key] == 'undefined') {
if (typeof adiff == 'undefined') {
adiff = {
_t: 'a'
};
}
// deleted
adiff[key] = [o[i], 0, 0];
dcount++;
}
else {
var d = diff(o[i], adiff[key][0]);
if (typeof d == 'undefined') {
// unchanged
delete adiff[key];
dcount--;
}
else {
// changed
adiff[key] = d;
}
}
}
if (dcount > 0) {
return adiff;
}
else {
// no changes
return;
}
};