> 웹 프론트엔드 > JS 튜토리얼 > JavaScript에서 두 변수의 값을 교환하는 7가지 솔루션

JavaScript에서 두 변수의 값을 교환하는 7가지 솔루션

高洛峰
풀어 주다: 2016-12-03 10:46:39
원래의
1847명이 탐색했습니다.

머리말

이 글에서는 a와 b의 변수값을 교환하는 7가지 방법을 정리했습니다

var a = 123;
var b = 456;
로그인 후 복사

변수값 교환하기 해결방법 1

가장 간단하고 쉬운 방법은 임시변수를 사용하는 것이지만 임시변수 사용방법이 너무 낮다

var t;
t = a;
a = b;
b = t;
로그인 후 복사

먼저 a의 값을 임시변수에 ​​저장하고, b를 a에 할당하고, 마지막으로 임시변수에 ​​있는 a의 값을 꺼내어 b에 할당하는 방법이 가장 기본적인

기법입니다. 2.

다음 해결책 중 어느 것도 임시 변수를 가지지 않는다는 점을 정리했습니다. 사실 임시 변수를 사용하지 않는다는 취지는 ​​변수 중 하나를 관련 있는 값으로 만드는 것입니다. 이런 식으로 먼저 다른 변수의 값을 변경하고 마지막으로 원래 수정된 변수 값을 변경할 수 있습니다

예를 들어 이

a += b;
b = a - b;
a -= b;
로그인 후 복사

a를 먼저 a와 b의 '합'(a와 b의 차이로 대체할 수도 있음, 동일), '합'에서 b를 빼면 교묘하게 변수를 구합니다. a의 값을 b에 할당한 다음 'sum'을 통해 a의 값을 빼서 b의 값을 a에 할당하거나 다음 변형(차이 형식)

a -= b;
b = a + b;
a = b - a;
로그인 후 복사

하지만 합의 형식이 더 이해하기 쉽습니다

교환변수 값 체계 3

이 방법은 JavaScript를 배우는 학생들이 이해하지 못할 수도 있습니다. 처음에는 JavaScript에서 내부 연산을 거의 사용하지 않기 때문입니다. 이것은 제가 그 당시 배우기 전에 알고리즘 대회 책에서 읽은 내용입니다. 낮은 수준의 비트 연산을 사용하여 변수 값을 교환하는 것입니다. 이는 또한 JavaScript의 진화입니다. 위의 해결 방법

a ^= b;
b ^= a;
a ^= b;
로그인 후 복사

a^=b^=a^=b을 사용하여 작업을 완료했지만 JavaScript는

할 수 없다는 것을 알았습니다.


a = (b^=a^=b)^a;
로그인 후 복사

변수 값 교환 방식 4

먼저 a를 객체로 변환합니다. 이 객체는 교환되어야 하는 키-값 쌍을 보유하고 있으며, 드디어 할당이 완료되었습니다

a = {a:b,b:a};
b = a.b;
a = a.a;
로그인 후 복사

교환변수 값 구성표 5

는 객체가 다음과 같다는 점을 제외하면 위의 방법과 매우 유사합니다. 배열로 대체

a = [a,b];
b = a[0];
a = a[1];
로그인 후 복사

변수 값 교환 방식 6

이 방법은 제가 생각해낸 것이 아닙니다. 그것을 생각해낸 사람은 분명 천재일 것입니다. 간단하고 투박한 한 줄의 코드 교환입니다.

a = [b,b=a][0];
로그인 후 복사

연산자 우선순위에 따라 b=a가 먼저 실행됩니다. 이때 b는 a 값의 변수를 직접 얻은 다음, 1단계 배열 인덱싱을 통해 a를 얻을 수 있습니다. b 값(이보다 더 좋을 수는 없습니다)

교환 변수 값 계획 7

제가 가진 마지막 계획은 ES6의 구조 분해 할당 구문을 사용하는 것입니다. 배열과 객체의 값을 지정하고 변수에 값을 할당하는데, 지금 테스트하고 있는 크롬 브라우저는 보시다시피

[a,b] = [b,a];
로그인 후 복사

을 구현했습니다. 구조 분해 할당 구문을 사용하면 변수 값을 매우 간단하게 교환할 수 있습니다. 이 구조 분해 할당 구문은 설명할 내용이 많기 때문에 오늘은 이에 대해 요약하고 지금은 설명하지 않겠습니다.

요약

이 기사에서는 변수 값을 교환하는 방법이 너무 많이 언급되었습니다. 다른 방법이 있는지는 모르겠습니다. 사소한 문제이지만 상상력을 발휘하는 데 사용할 수 있습니다.

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿