Задать вопрос
szQocks
@szQocks

Почему изменяется arr2, в чем моя ошибка?

const arr1 = [7, 17, 1, 9, 1, 17, 56, 56, 23],
      arr2 = [56, 17, 17, 1, 23, 34, 23, 1, 8, 1];

Array.prototype.findDoubleClone = function(_arr) {
  const supportArr = [];
  const arr = _arr.slice();
  
  this.forEach(n => {
    const index = arr.indexOf(n)
    if(index >= 0){
      supportArr.push(n)
      arr.splice(index, 1)
    }
  })
  const result = supportArr.filter((n, index, arr) => arr.indexOf(n) !== index)
  return result;
}

console.log(arr1.findDoubleClone(arr2))


Решил написать метод для массива, вроде делаю всё логично но почему то arr2 изменяется, то есть каким-то образом у меня в итоге работает глубокое копирование, и я так и не понял где оно или ошибка в чем-то другом ?

Суть метода в том что бы найти дубли в массивах, где дублей больше двух и вернуть результаты в новом массиве.
  • Вопрос задан
  • 139 просмотров
Подписаться 1 Простой 1 комментарий
Решения вопроса 2
Seasle
@Seasle Куратор тега JavaScript
Поэтому arr.splice(index, 1)
Ответ написан
Alexandroppolus
@Alexandroppolus
кодир
arr (который аргумент функции findClone) - это не копия массива arr2, а ссылка на него. Потому, меняя arr методом splice, ты фактически меняешь arr2
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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