
| 메서드 | 설명 |
|---|---|
push(item) | 배열 끝에 요소 추가 |
pop() | 배열 끝 요소 제거 후 반환 |
unshift(item) | 배열 앞에 요소 추가 |
shift() | 배열 앞 요소 제거 후 반환 |
splice(index, count, item1, item2, ...) | 특정 위치에서 요소 추가/제거 |
reverse() | 배열 요소 순서 뒤집기 |
sort(compareFn) | 배열 정렬 (기본: 문자열 기준) |
fill(value, start, end) | 특정 값으로 배열 채우기 |
copyWithin(target, start, end) | 특정 위치의 요소를 복사하여 덮어쓰기 |
| 메서드 | 설명 |
|---|---|
map(callback) | 배열을 변형하여 새로운 배열 생성 |
filter(callback) | 조건을 만족하는 요소만 모아 새 배열 생성 |
slice(start, end) | 배열의 특정 부분을 잘라 새 배열 생성 |
concat(array2) | 두 배열 합쳐서 새 배열 생성 |
flat(depth) | 다차원 배열을 평탄화 |
flatMap(callback) | map + flat(1) 효과 |
| 메서드 | 설명 |
|---|---|
indexOf(item) | 특정 요소의 첫 번째 인덱스 반환 |
lastIndexOf(item) | 특정 요소의 마지막 인덱스 반환 |
includes(item) | 배열에 요소가 포함되어 있는지 확인 (true/false) |
find(callback) | 조건을 만족하는 첫 번째 요소 반환 |
findIndex(callback) | 조건을 만족하는 첫 번째 요소의 인덱스 반환 |
some(callback) | 하나라도 조건을 만족하면 true |
every(callback) | 모든 요소가 조건을 만족해야 true |
| 메서드 | 설명 |
|---|---|
join(separator) | 배열을 문자열로 변환 (구분자 지정 가능) |
toString() | 배열을 쉼표로 구분된 문자열로 변환 |
reduce(callback, initialValue) | 배열 요소를 누적하여 하나의 값 반환 |
reduceRight(callback, initialValue) | reduce와 같지만 오른쪽부터 실행 |
| 메서드 | 설명 |
|---|---|
forEach(callback) | 각 요소에 대해 함수 실행 (반환값 없음) |
entries() | [index, value] 쌍의 이터레이터 반환 |
keys() | 인덱스의 이터레이터 반환 |
values() | 요소 값의 이터레이터 반환 |
| 메서드 | 설명 |
|---|---|
isArray(value) | 값이 배열인지 확인 (Array.isArray()) |
내가 자주 사용하는 메서드만 따로 들여다보자
include()를 쓰는것을 추천한다.includes(찾을 요소, start) start는 생략시 0부터 확인한다.//example
const arr = [1,2];
const newArr = [...arr, 3]; // [1,2,3]
splice(start, deleteCount, items)//example
const arr = [1,2,3,4];
const result = arr.splice(1,2,20,30)
//result = [2,3] 삭제된 배열이 반환되는 것을 볼 수 있다
//arr = [1,20,30,4] 2,3이 삭제된 뒤 배열의 모습
deleteCount가 0이면, start뒤에 바로 삽입하게 된다.
slice(start, end)이때의 복사본은 얕은 복사를 통해 생성된다 (복사된 요소의 참조값이 같다는 뜻)
나중에 다시 포스팅하겠지만, 잠시 짚고 넘어가자면,
//example
const arr = [1,2,3,4];
arr.join() //1,2,3,4 -> default ,
arr.join('') //1234
//example
const arr = [1,2,3]
arr.fill(0) //[0,0,0]
fill(채울 요소, start, end)이다. 참고로 end-1까지만 바뀐다는걸 잊지 말자
const points = [40,2,1,4,100];
points.sort((a,b)=>a-b) //[1,2,4,40,100]
//반대의 b-a의 경우에는 내림차순으로 정렬된다.
timesort 알고리즘을 사용한다. (기존엔 quicksort알고리즘 이였다)
const num = [1,2,3]
const pow = [];
num.forEach((n)=> pow.push(n**2))// [1,4,9]
num의 모든 요소를 순회하며 콜백함수를 반복 호출한다.
forEach는 3개의 인수를 전달할수 있다.
~.forEach(요소값, 인덱스, this)를 받는다
여기서 this는 콜백함수 내부의 this가 아니다. 위 예시로는 ~ 이게 되겠다.
반환값은 undefined이다.
forEach메서드는 break, continue문을 사용할수없다. 모든 요소를 순회해야만 한다.
~.map((요소값, 인덱스, this)=>{}) 3가지 인수를 받는다.~.filter((요소값, 인덱스, this)=>{}) 3가지 인수를 받는다.
~.reduce((accumulator, currentValue, index, array)=>{}, 초기값)
accumulator: 초기값 또는 누적값(필수)
currentValue: 현재 순회 중인 요소(필수)
index: 현재 요소의 인덱스
array: this(호출된 배열 자체)
평균구하기, 최대값 구하기, 중복 횟수 구하기 등 한가지 값을 도출해내는데 특화된 함수다.
map, filter, some, every, find와 같은 모든 배열의 고차함수는 reduce로 구현이 가능하다.
=> 참고로 초기값은 지정해주는게 좋다. 빈 배열로 호출될경우에 에러가 발생한다. 혹은, 객체가 전달 되었을때도 오류가 발생할수 있다.
~.some((요소, 인덱스, this)=>{}) 3가지 인수를 받는다.~.every((요소, 인덱스, this)=>{}) 3가지 인수를 받는다.~.find((요소, 인덱스, this)=>{}) 3가지 인수를 받는다.~.findIndex((요소, 인덱스, this)=>{}) 3가지 인수를 받는다.모든 함수와 모든 동작 방식들을 외우고 바로 코딩에 접목시키기는 어려움이 있다.
하지만 하나씩 코테, 프로젝트에 도입하다보면 적재적소에 코드를 활용할수 있을것이라고 생각한다.
자주 들려서 자주 만나보자.