** 이 글은 Learning JavaScript Data Structures and Algorithms 책을 기반으로 작성되었습니다.
** 이 글은 해당 책의 전체적인 내용을 정리한 것이 아닌, 새롭게 알게 된 내용 + 기억이 필요하다고 생각되는 부분 + 저의 생각만을 정리합니다.
일반적으로 JS에서는 shift() 메소드를 사용하면 간단히 배열의 앞에 요소를 추가할 수 있다. 그러나 이러한 shift()의 작동 방식은 어떻게 될까?
let numbers = [1,2,3,4,5]
for(let i=numbers.length; i>=0; i--) numbers[i] = numbers[i-1];
console.log(numbers[0]); // 결과: undefined
numbers[0] = 0; // numbers[0] = undefined 에서 0을 재할당
numbers = [0,1,2,3,4,5]
배열의 뒤쪽에 원소를 추가하는 경우에도 위와 같은 방식으로 동작한다.
일반적으로 배열 안의 요소를 오름차순 정렬을 하기 위해서 보통
array.sort((a,b) => a-b)
같은 방식을 사용한다. 그런데 왜 저런 식으로 비교함수를 직접 만들어줘야 하는가? 그 이유는
sort()는 모든 원소를 문자열로 취급해 사전적(lexicographically)으로 정렬한다.
let names = ['Ana', 'ana', 'john', 'John'];
console.log(names.sort()); // 결과: ['Ana', 'John', 'ana', 'john']
지금껏 크게 생각하지 않고 shift, unshift, sort 등의 메소드를 사용해 배열의 값을 변경했는데, 원리를 아는게 더 중요하다는 걸 또 배웠다 ..!