머리말
이 글에서는 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];
을 구현했습니다. 구조 분해 할당 구문을 사용하면 변수 값을 매우 간단하게 교환할 수 있습니다. 이 구조 분해 할당 구문은 설명할 내용이 많기 때문에 오늘은 이에 대해 요약하고 지금은 설명하지 않겠습니다.
요약
이 기사에서는 변수 값을 교환하는 방법이 너무 많이 언급되었습니다. 다른 방법이 있는지는 모르겠습니다. 사소한 문제이지만 상상력을 발휘하는 데 사용할 수 있습니다.