Home > Web Front-end > JS Tutorial > body text

Seven solutions to swap the values ​​of two variables in JavaScript

高洛峰
Release: 2016-12-03 10:46:39
Original
1760 people have browsed it

Foreword

This article summarizes seven ways to exchange the variable values ​​​​of a and b

var a = 123;
var b = 456;
Copy after login

Exchange variable value scheme one

The simplest and easiest way is to use a temporary variable, but use temporary The variable method is really too low

var t;
t = a;
a = b;
b = t;
Copy after login

First store the value of a in a temporary variable, then assign b to a, and finally take out the value of a in the temporary variable and assign it to b. This method is the most basic That’s it

Exchange variable value plan two

The following plans will not have temporary variables. I summarized it. In fact, the idea of ​​not using temporary variables is to make one of the variables into a value that is related to both a and b. , in this way, you can change another variable value first, and finally change the original modified variable value

For example, this

a += b;
b = a - b;
a -= b;
Copy after login

Let a first become the 'sum' of a and b (it can also be changed to the 'sum' of a and b Difference, the same), 'and' minus b cleverly gets the variable value of a and assigns it to b, and then subtracts the value of a through 'and' to get the value of b and assigns it to a, or the following variation (difference form )

a -= b;
b = a + b;
a = b - a;
Copy after login

But the form of sum is easier to understand

Exchange variable value scheme three

This method may not be understood by students who are learning JavaScript for the first time, because we rarely use JavaScript in place Operation, this is what I learned when I read the algorithm competition book in the past. It uses low-level bit operations to exchange variable values, which is also the evolution of the above scheme. =b^=a^=b to complete the task, but I found that JavaScript cannot

But we can do this

a ^= b;
b ^= a;
a ^= b;
Copy after login


Exchange variable value scheme four

turn a into an object first, this object Save the key-value pairs that should be exchanged, and finally assign them

a = (b^=a^=b)^a;
Copy after login

Exchange variable value scheme 5

is very similar to the above method, except that the object is replaced by an array

a = {a:b,b:a};
b = a.b;
a = a.a;
Copy after login

Exchange variables Value plan six

This method is very clever. I didn’t come up with it. The person who came up with it must be a great god, unless he dreamed it up. A simple and crude line of code exchanged the variable values ​​​​of a and b

a = [a,b];
b = a[0];
a = a[1];
Copy after login

According to the operator priority, b=a is executed first. At this time, b directly gets the variable value of a, and then one step of array indexing allows a to get the value of b (it couldn’t be more powerful)

Exchange variable value plan 7

My final solution is to use the destructuring assignment syntax of ES6, which allows us to extract the values ​​​​of arrays and objects and assign values ​​​​to variables. However, the chrome browser I am currently testing has already implemented it

a = [b,b=a][0];
Copy after login

It can Seeing that the destructuring assignment syntax makes it super simple to exchange variable values, this destructuring assignment syntax requires a lot to talk about. It is not the focus of today. I will summarize it in the future and won’t talk about it now

Summary

This article mentioned this I don’t know if there are any other ways to exchange variable values. Although it is an insignificant problem, it can be used to exercise our imagination.

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!