Знаешь как надо потестить? Используя эти преобразования из старого массива получить новый, у меня что-то не получается.
|
Цитата:
Кстати тест, реально еврейский у меня он 3 раза показал 3к |
Твоя функция не справилась с этим
var oldArray = [1, 2, 3, 4, 5, 6, 7, 8, 9]; var newArray = [1, 2, 3, 5, 34, 32, 4, 45]; var changes = compare(oldArray, newArray); console.log(changes); function compare(oArr, arr) { var search = arr.slice(); var insert = []; var remove = []; for (var i = 0, index; i < oArr.length; i++) { index = search.indexOf(oArr[i]); if (index < 0) remove.push(i); else delete search[index]; } for (var i = 0; i < search.length; i++) { if (i in search) insert.push(i); } return { remove: remove, insert: insert } } |
Цитата:
Как то так, писал прям в форме отправки (может не работать) function genArr(count) { var arr = []; for(var i = 0; i < count; i++) { arr.push(i % 2 ? Math.random(): i); } return arr; } var arr = genArr(100), arr2 = arr.slice(); for(var i = 0, index; i < 20; i++) { index = Math.round(Math.random() * 100); arr2[index] = i; } |
var oldArray = [1, 2, 3, 4, 5];
var newArray = [1, 2, 3, 5, 4, 45]; вот с этим не справляется пишет что insert:[5] и все он не видит разницы между 4,5 и 5,4 щам будем фиксить) |
Цитата:
"remove 5,6,7,8 insert 4,5,7 " |
Maxmaxmaximus4, ну вообще то она порядок не учитывает)
|
cyber, уже учитывает, блять не против изредка помогать в написании великой и ужасной ui? ты гениален!!!! я серьезно!! я блять чо тока не придумал чтобы это сделать, да, мое было бы оптимальнее и "правильнее" но млять, кому оно науй надо если и так РАБОТАКЕТ и так МАЛО КОДУ, при чем не факт что мое было бы быстрее так как там несколько проходов и прочего, моя возвращала дамп который потом надо было бы парсить и делать по нему что-то, а твоя ГЕНИАЛЬНАЯ функция ТУПО ВОЗВРАЩАЕТ ПОРЯДОК ДЕЙСТВИЙ КОТОРЫЕ НАДО СДЕЛАТЬ ЧТОБЫ ПОЛУЧИТЬ ИЗ ОДНОГО МАССИВА ДРУГОЙ)!!!!! ЭТО ТО-ЧТО-НУЖНО!! Ты гениален! Правда!
вот кстати исправленная версия: function compare(oArr, arr) { var search = arr.slice(); var insert = []; var remove = []; for (var i = 0, index; i < oArr.length; i++) { index = search.indexOf(oArr[i], i); if (index < 0) remove.push(i); else delete search[index]; } for (var i = 0; i < search.length; i++) { if (i in search) insert.push(i); } return { remove: remove, insert: insert } } |
Maxmaxmaximus4,
лови, теперь с блэкджеком и replace Array.prototype.compare = function(arr) { var search = arr.slice(), insert = [], remove = [], replace = []; for(var i = 0, index; i < this.length; i++) { index = search.indexOf(this[i]); if(!~index) { remove.push(i); continue; } i != index && replace.push({old: i, new: index}); delete search[index]; }; search.forEach(function (elem, i) { if(elem) insert.push(i); }); return { remove: remove, insert: insert, replace: replace } } console.log([1, 2, 3, 4, 5].compare([1, 2, 3, 5, 4, 45])); |
Цитата:
|
Часовой пояс GMT +3, время: 08:17. |