Назначьте элемент массива переменной, затем измените элемент массива с помощью переменной modify, но это не работает

#javascript #swap

Вопрос:

Поэтому я хочу сделать выражение для переменной вместо прямого элемента массива, потому что я думаю

  1. Компилятор произведет повторный расчет, чтобы найти элемент массива
  2. Переменную именования легче понять, чем 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 Вот почему я предпочитаю именованную переменную хе-хе