Array Non-Mutating Methods
아래 메소드들은 원본 배열을 해치지 않는다.
slice()
- 얕은 복사본을 새로운 배열 객체로 반환합니다. 원본 배열은 바뀌지 않습니다.
- 인자를 두개 받는다. 시작할 인덱스 와 끝날 인덱스
concat()
- 인자로 주어진 배열이나 값들을 기존 배열에 합쳐서 새 배열을 리턴
filter()
[1, 2, 3].filter((x) => x % 2 === 0); // [2]
- 콜백으로 받은 함수를 배열의 요소 각각에 실행하고 함수의 값이 true로 적용되는 요소만 담은 새로운 배열을 리턴
reduce()
numbers = [1, 2, 3];
numbersCopy = numbers.reduce((newArray, element) => {
newArray.push(element);
return newArray;
}, []);
Array Mutating Methods
아래 메소드들은 원본 배열을 변경한다.
sort()
- 배열의 요소를 적절한 위치에 정렬한 후 그 배열을 반환한다.
- 기본 정렬 순서는 문자열의 유니코드 코드 포인트를 따릅니다.
내부에 함수를 제공해주지 않았을 때 기본적으로 정렬되는 순서
- 알파벳만 있을 때 : 기본적으로 알파벳 순. 대문자 먼저 소문자 나중
- 숫자만 있을 때 : 숫자순으로 정렬, 10이 2 보다 앞에오는 것 주의
- 알파벳 + 숫자 : 알파벳 먼저, 숫자가 나중에. 알파벳과 숫자의 각각의 규칙은 위와 동일함.
compareFunction
(Optional)
정렬 순서를 내가 직접 정의하기 위한 함수.
생략하면 문자열의 유니코드 값에 따라 정렬.
compareFunction(a, b) < 0
a를 b보다 낮은 인덱스로 정렬. (a가 먼저 나옴)
compareFunction(a, b) = 0
a와 b를 서로에 대해 변경하지 않고 모든 다른 요소에 대해 정렬
compareFunction(a, b) > 0
b를 a보다 낮은 인덱스로 정렬. (b가 먼저 나옴)
splice()
- 기존 요소를 제거하거나 새 요소를 추가하여 배열의 내용을 변경
- 인자를 3개 받는다.
- 배열의 변경을 시작하는 인덱스
- 배열에서 제거를 할 요소의 수
- 배열에 추가될 요소
push()
- 인자로 받은 값을 배열의 맨 뒤에 넣고 바뀐 배열의 길이를 리턴
unshift()
- 인자로 받은 값을 배열의 맨 앞에 넣고 바뀐 배열의 길이를 리턴
pop()
shift()
기타 유용한 Methods
.slice().sort()
체이닝
slice 안에 값을 안 넣으면 그대로 얕은 복사본을 리턴하므로, 얕은 복사용으로 그냥 사용한 것이다.
indexOf()
- 배열에서 지정된 요소를 찾을 수있는 첫 번째 인덱스를 반환하고 존재하지 않으면 -1을 반환(return 값을 검사해서 Boolean 형태로 활용 가능)