@vovastradamus

Шафл одной переменной, приводит к шафлу двух. Как исправить?

Доброго дня/вечера/ночи.
Объясните мне, почему когда я перемешиваю одну переменную, перемешивается и вторая? Либо я чего не понимаю, либо это фишка дажаскрипта. Как сделать, чтоб после перемешивания, я мог нормально присвоить изначальному массиву?
Вот краткий пример того, как делаю:
function shuffle(array) {
  var m = array.length, t, i;
  while (m) {
    i = Math.floor(Math.random() * m--);
    t = array[m];
    array[m] = array[i];
    array[i] = t;
  }
  return array;
}
arr2 = [1, 23, 4, 5, 6];
arr3 = arr2;
console.log(arr3);
shuffle(arr3);
console.log(arr3);
arr3 = arr2;
console.log(arr3);
  • Вопрос задан
  • 134 просмотра
Решения вопроса 1
Массивы передаются по ссылке.
Когда вы пишите arr3 = arr2, вы не создаёте новый массив, который является копией первого, вы лишь присваиваете ссылку.
Чтобы скопировать массив, можно например написать arr3 = arr2.slice();
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы