위치를 바꾸는 3가지 방법
1. 임시 변수 활용
// 1) 임시 변수를 활용한 방법
function swap(idx1, idx2, arr) {
let temp = arr[idx1];
arr[idx1] = arr[idx2];
arr[idx2] = temp;
}
2. Destructuring assignment 활용 (구조분해 할당)
// 2) Destructuring assignment를 활용한 방법
function swap(idx1, idx2, arr) {
// arr이 reference type이라 가능
[arr[idx1], arr[idx2]] = [arr[idx2], arr[idx1]];
}
3. XOR 연산을 활용
// 3) XOR 연산을 활용한 방법
function swap(idx1, idx2, arr) {
// arr이 reference type이라 가능
arr[idx1] ^= arr[idx2];
arr[idx2] ^= arr[idx1];
arr[idx1] ^= arr[idx2];
}
저는 처음에 이게 가능한 이유를 몰랐습니다. 그런데 콘솔로 찍고 조금만 고민하니 이유를 찾았습니다. (ref)
5; // 00000000000000000000000000000101
3; // 00000000000000000000000000000011
6; // 00000000000000000000000000000110
let a = [5, 3];
function swap(idx1, idx2, arr) {
console.log('1-arr:', arr); // 1-arr: [ 5, 3 ]
arr[idx1] ^= arr[idx2];
console.log('2-arr:', arr); // 2-arr: [ 6, 3 ]
arr[idx2] ^= arr[idx1];
console.log('3-arr:', arr); // 3-arr: [ 6, 5 ]
arr[idx1] ^= arr[idx2];
console.log('4-arr:', arr); // 4-arr: [ 3, 5 ]
}
swap(0, 1, a);
console.log('a:', a); // a: [ 3, 5 ]
'언어(JS,TS) > JavaScript' 카테고리의 다른 글
JavaScript [파일 : package.json vs package.lock.json] (0) | 2022.06.13 |
---|---|
JavaScript [스코프 : 함수스코프 vs 블록스코프] (0) | 2022.06.03 |
JavaScript[공부 : Class 사용방법] (0) | 2022.05.20 |
JavaScript [정보 : Passport.js, JWT ] (1) | 2022.05.18 |
JavaScript [메소드 : 문자열, 배열 순서 뒤집기 // reverse(), for문 응용] (0) | 2021.11.30 |