var oldArray = [1, 2, 3, 4, 5];
var newArray = [11, 3, 4, 3, 11, 21];
var changes = compare(oldArray, newArray);
console.log(changes);
// превратим старый аррей в новый используя полученные данные
// удаляем (в обратном порядке чтобы индексы не смещались)
for (var i = changes.remove.length - 1; i >= 0; i--) {
var index = changes.remove[i];
oldArray.splice(index, 1);
}
// добавляем
for (var i = 0; i < changes.insert.length; i++) {
var index = changes.insert[i];
oldArray.splice(index, 0, newArray[index])
}
// изменяем
for (var i = 0; i < changes.replace.length; i++) {
var index = changes.replace[i];
oldArray[index] = newArray[index];
}
// отобразим результат, старый и новый массивы теперь равны
console.log(newArray);
console.log(oldArray);
// наща мега функция
function compare(oArr, arr) {
var search = arr.slice();
var changes = {
insert : [],
remove : [],
replace: []
}
for (var i = 0, index; i < oArr.length; i++) {
index = search.indexOf(oArr[i], i);
if (index < 0) changes.remove.push(i);
else delete search[index];
}
for (var i = 0; i < search.length; i++) if (i in search) {
var index = changes.remove.indexOf(i);
if (index < 0) changes.insert.push(i);
else {
changes.remove.splice(index, 1);
changes.replace.push(i)
}
}
return changes
}