@Evgenij_nechujveter

Как работает этот массив и цикл?

Обьясните пожалуйста как работает этот массив?

var array = [1,2,3,4,5,6,7,8];
    for (var i = 0; i < (array.length / 2); i++) {
        array[i] = [array[i],array[array.length - i - 1]];
        array[array.length - i - 1] = array[i][0];
        array[i] = array[i][1];
    }
    document.write(array);


Не могу понять какое значение i будет в 3-ей строчке вконце
  • Вопрос задан
  • 719 просмотров
Пригласить эксперта
Ответы на вопрос 3
@pekc83
// i === 0
array[i] = [array[i],array[array.length - i - 1]]; // [[1, 8], 2, 3, 4, 5, 6, 7, 8]
array[array.length - i - 1] = array[i][0]; // [[1, 8], 2, 3, 4, 5, 6, 7, 1]
array[i] = array[i][1]; // [8, 2, 3, 4, 5, 6, 7, 1]
// и т.д.
Ответ написан
@artemt
Full-stack developer
А если нажать F12 и запустить код в консоли?

Сначала в ячейку массива временно записывается массив из двух элементов, собственного и зеркального с обратной стороны. Потом значения возвращаются, но обмениваются местами. Чтобы не поменять элементы местами дважды, цикл идёт только до середины длины.
Ответ написан
Комментировать
Подставляй значения и станет понятнее
var array = [1,2,3,4,5,6,7,8];
    for (var i = 0; i < 4 /*(8 / 2)*/; i++) {
        array[0] = [array[0],array[array.length - 0 - 1]];
        array[array.length - 0 - 1] = array[0][0];
        array[0] = array[0][1];
     }
// Следующая итерация i = 1, i < 4 -> да 
        array[1] = [array[1],array[array.length - 2]];
        array[array.length - 2] = array[1]0];
        array[1] = array[1][1];
// Следующая итерация i = 2, i < 4 -> да 
         array[2] = [array[2],array[array.length - 3]];
        array[array.length - 3] = array[2]0];
        array[2] = array[2][1];
// Следующая итерация i = 3, i < 4 -> да 
         array[3] = [array[3],array[array.length - 4]];
        array[array.length - 4] = array[3]0];
        array[3] = array[3][1];
// Следующая итерация i = 4, i < 4 -> нет, выходим из цикла 
 document.write(array);
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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