Все, что вам нужно знать о перестановке переменных в JavaScript

Все, что вам нужно знать о перестановке переменных в JavaScript

Maksym Pohribnyak

Перестановка двух переменных обычно требует временной переменной или алгоритма обмена XOR, как показано в примере № 2. Мы рассмотрим два типа условий и 5 типов методов замены двух переменных в JavaScript.

  1. Примеры #2 and #3 применимы, если переменная является типом number;
  2. Остальные методы работают со всеми типами, такими как: stringnumberobjectarray и.т.д

Давайте разберем 5 различных способов обмена двумя переменными в JavaScript. Вот первый.

# 1 Использование временной переменной

Вышеупомянутый метод может использоваться для замены двух типов переменных любого типа.

В приведенном выше примере мы создали переменную tmp для хранения значения x и присвоения  y к x , а затем tmp к x.

Обмен значениями переменных без временной переменной.

# 2 Обмен с использованием оператора Bitwise XOR 

Для лучшего понимания обратитесь к этому вики-алгоритму обмена XOR.

Оператор xor в JavaScript преобразует свои операнды в 32-разрядные целые числа (используя внутренний метод ToInt32 - см. Раздел 11.10 стандарта ECMAScript). Он не дает правильных результатов для нецелых числовых значений. Он также преобразует нечисловые значения в 32-разрядные целые числа. Если вы начнете с x = "hi" и y = "there", вы получите x == 0 и y == 0.

# 3 Действительно только для чисел

Приведенный выше пример действителен только для переменных, которые являются типом number. Убедитесь, что они именно такого типа.

Обмен одной строкой

Здесь я покажу вам пару методов, которые могут поменять переменные любого типа в одной строке.

# 4 Использование массива

Используя массив, мы записываем значение x в первым эелементом (с индексом 0), а следующим элементом присваиваем знанчению x - значение переменной y. После, берем первый элемент массива и записываем его значение в переменную y.

# 5 Использование выражения разрушения

Вот мой самый любимый , самый простой и читаемый метод обмена двумя переменными с использованием выражения деструктурирования, посмотрите на пример ниже:

Но будьте осторожны, он поддерживает только в ES6 и выше.




Report Page