모던자스 정리
배열의 모든 메서드를 부셔봅시다
요소 추가, 제거
기본적으로
arr.push(요소)
arr.pop()
arr.shift()
arr.unshift(요소)
이 외에도 다양하다. 렛츠고
splice
- 형태 :
arr.splice(index[, deleteCount, elem1, ...., elemN])
- index : 삭제시킬 첫번째 요소를 가리키는 인덱스
- deleteCount : 제거하고자 하는 요소의 개수
- elem1, ... elemN : 삭제 후 배열에 추가할 요소
- 반환값 : 삭제된 요소로 구성된 배열
- 요소 추가하는 법 :
arr.splice(index, 0, 추가할 요소)
를 하면, 0개를 삭제하고 index 자리에 추가할 요소를 넣어주게 된다.
slice
- 형태 :
arr.slice([start], [end])
- start 인덱스부터 end 인덱스까지 요소를 복사해서 새로운 배열을 반환
- 인수를 하나도 넣지 않고
arr.slice()
를 통해 새로운 배열로 기존 배열을 복사할 수 있다.
concat
- 형태 :
arr.concat(요소1, 요소2 ...)
- 새로운 배열을 만들거나 기존 배열에 요소를 추가하고자 할 때 사용할 수 있다.
요소1, 요소2...
등이 복사되어서 arr
배열에 합쳐져서 새로운 배열을 반환한다.
- 요소로 배열이 올 수도 있다. 이럴 경우 기존 배열에 요소 배열이 합쳐서 하나의 새로운 배열이 반환된다.
- 요소로 객체가 올 수도 있고, 이럴 경우에도 객체가 통째로 복사되어 하나의 배열의 요소로 들어가게 된다.
let arr = [1, 2];
console.log( arr.concat([3, 4], [5, 6]) );
반복작업
forEach
- 형태 :
arr.forEach(함수)
- 주어진 함수를 배열 요소 각각에 대해 실행시켜줌
arr.forEach((요소, index, 배열) => { ... });
- forEach의 인수로 들어가는 함수에서는 아무것도 반환되지 않는다.
배열탐색
indexOf
- 형태 :
arr.indexOf(item, from)
arr
배열 내에서 from
인덱스부터 시작해서 item
요소를 찾는다
- 반환값 : 해당 요소의 인텍스 (발견 못할 경우 -1 반환)
lastIndexOf
- 형태 :
arr.lastIndexOf(item, from)
indexOf
와 동일하지만 요소를 뒤에서부터 찾는다.
includes
- 형태 :
arr.includes(item, from)
arr
배열 내에서 from
인덱스부터 시작해서 item
요소를 찾는다 (위와 동일)
- 반환값 : 찾으면 true, 못찾으면 false
- 특징 : indexOf, lastIndexOf와 달리 NaN도 제대로 처리한다
find
- 형태 :
arr.find(function(item, index, array) {...};)
- item : 함수를 호출할 요소
- index : 요소의 인덱스
- array : 배열 자기 자신
- 반환값 : 참일 경우 해당 요소를 반환, 거짓이면 undefined
- 단 하나의 요소만 찾음
findIndex
- find와 똑같은 역할
- 반환값 : 참일 경우 해당 요소의 '인덱스'를 반환, 거짓이면 -1
filter
- 형태 :
arr.filter(function(item, index, array) {...})
- find와 유사하지만 조건을 충족하는 요소가 여러개일때 사용
- 반환값 : 조건을 충족하는 요소들의 배열
배열변형
map
- 형태 :
arr.map(함수)
- 반환값 : 함수 호출 결과가 되는 배열
sort
- 형태 :
arr.sort();
- 배열 정렬해줌. arr.sort();
- 반환값 : 정렬된 배열이 반환되긴 하지만, 반환값을 입력하지 않아도 arr 자체가 정렬되어서 반환값은 잘 사용 안함
- Default : 모든 요소가 문자열로 취급되어 정렬됨
- ()안에 새로운 함수를 정의해서 요소 정렬의 기준을 커스텀할 수 있음
reverse
- 형태 :
arr.reverse();
- 배열을 역순으로 정렬
split
- 형태 :
str.split(구분자)
- 구분자를 기준으로 문자열을 쪼개줌
- 두번째 인수로 숫자를 받으면, 배열의 길이를 넘어가는 요소를 무시함
join
- 형태 :
arr.join(glue)
- glue를 사이에 끼워넣고 모든 배열의 요소를 하나의 문자열로 합침
reduce
- 배열을 기반으로 값 하나를 도출할 때 사용
- 형태 :
let value = arr.reduce(function(accumulator, item, index, array) {
}, [initial]);
배열 여부 알아내기
Array.isArray
- 형태 :
Array.isArray(value));
- 배열이 특별한 객체 타입이기 때문에,
typoef
를 사용하면 객체와 구분될 수 없다.
- isArray는 배열인지를 판단해주는 전용 메소드이다.
value
가 배열이면 true, value
가 아니면 false 반환
thisArg
- 대부분의 배열 메서드가 받을 수 있는 매개변수