Показать сообщение отдельно
  #25 (permalink)  
Старый 08.12.2013, 23:30
Кандидат Javascript-наук
Посмотреть профиль Найти все сообщения от Maxmaxmaximus4
 
Регистрация: 08.12.2013
Сообщений: 142

Давай подумаем как в эту реализацию можно добавить replace?

я тут слегка отрефакторил

Array.prototype.compare = function(arr) {
    var search = arr.slice();
    var insert = [];
    var remove = [];

    for (var i = 0, index; i < this.length; i++) {
      index = search.indexOf(this[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
    }
}


по уму, взять и посмотреть где в remove и insert есть одинаковые элементы, это ознчает что там происходит удаление и вставка, то есть замена =) но нет, не всегда замены детектируется так, щас поищу я когда тестировал её там было пару случаев когда индексы разные были, если изменения происходили на коцне массива.

Последний раз редактировалось Maxmaxmaximus4, 08.12.2013 в 23:41.
Ответить с цитированием