samutin
@samutin
Начинающий WEB-программист

Какой алгоритм для поиска разницы между двумя массивами посоветуете?

Доброго времени суток.
Появилась необходимость в создании функции на JS, которая:
  • на входе получает: два массива (1-й оригинал, 2-й изменённый)
  • на выходе: порядковый номер отличного элемента и вид разности
  • массивы на входе в свою очередь состоят из массива с двумя элементами
  • виды разности:
    1. добавлен 1 элемент (всегда в конец массива)
    2. удалён 1 элемент
    3. изменён 1 элемент


Что имеется:
function func(a,b){
  // Если старый массив короче значит добавлен 1 элемент в конец массива
  if (b.length > a.length) {
    return {num: b.length - 1, type: 'add'};
  }
  
  // Если старый массив длинее значит удалён 1 элемент
  else if (b.length < a.length) {
    for (let i = 0; i < a.length; i++) {
      if (a[i][0] != b[i][0] || a[i][1] != b[i][1]) {
        return {num: i, type: 'delete'};
      }
    }
    
  // Иначе был изменён элемент
  } else {
    for (let i = 0; i < a.length; i++) {
      if (a[i][0] != b[i][0] || a[i][1] != b[i][1]) {
        return {num: i, type: 'change'};
      }
    }
  }
}


Может кто-нибудь знает более оптимальный алгоритм?
Буду премного признателен.
JsFiddle:
  • Вопрос задан
  • 581 просмотр
Решения вопроса 1
longclaps
@longclaps
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы