#javascript #swap
Вопрос:
Поэтому я хочу сделать выражение для переменной вместо прямого элемента массива, потому что я думаю
- Компилятор произведет повторный расчет, чтобы найти элемент массива
- Переменную именования легче понять, чем arr[idx]
Но когда я пытаюсь поменять местами 2 элемента в массиве с помощью переменной, это не работает (см. Код ниже).
Я не могу придумать ключевое слово для этой ситуации. Результаты Google-это массив глубоких/неглубоких копий.
Есть какие-нибудь объяснения?
for (let i = 0, j = 1; i < numsClone.length amp;amp; j < numsClone.length;) {
let numHasEvenIdx = numsClone[i];
let numHasOddIdx = numsClone[j];
if (numHasEvenIdx % 2 === 1 amp;amp; numHasOddIdx % 2 === 0) {
[numsClone[i], numsClone[j]] = [numsClone[j], numsClone[i]];
// I want this to be [numHasEvenIdx, numHasOddIdx] = [numHasOddIdx, numHasEvenIdx]
i = 2;
j = 2;
}
else if (numHasEvenIdx % 2 === 0) i = 2;
else j = 2; //(numHasOddIdx % 2 === 1)
}
Комментарии:
1. 1. Назначения массивов являются ссылками, а не копиями. 2. Ваш ожидаемый результат неясен. Вы начинаете с независимых массивов в своем цикле, но цикл создает вложенные массивы. Не могли бы вы предоставить «до» и «после» представления ваших данных?
2. Я не вижу вложенных массивов в своем цикле @RandyCasburn
3. да, я неправильно прочитал ваше заявление о назначении. Спасибо за разъяснение.
4. @RandyCasburn Вот почему я предпочитаю именованную переменную хе-хе