자바스크립트 배열 내장함수 중 하나이다.
배열을 특정 함수를 사용해 전체적으로 변환해주고 싶을때 사용하는 함수이다.
리액트에서 내부적으로 제거/업데이트/추가를 할 때 해당 작업을 효율적으로 하기 위해 필요하다.
배열을 렌더링할 때는 key
값이 필수로 들어가야 한다.
만약 key
를 넣지 않을 경우 렌더링은 되지만, key가 없다는 에러가 발생한다. (해당 배열의 index가 key로 자동 적용되긴 함. 하지만 만약 데이터를 제거/변경/추가할 경우 key값이 계속해서 수정된다.)
불변성을 유지하면서 배열 속 데이터를 제거해보자.
const numbers = [1, 2, 3, 4, 5];
// slice와 concat을 이용할 수 있다. (배열 속 데이터 삭제 예시)
numbers.slice(0,2).concat(numbers.slice(3, 5)) // 결과: [1, 2, 4, 5]
// spread 함수를 이용할 수도 있다. (배열 속 데이터 수정 예시)
[
...numbers.slice(0,2),
10,
...numbers.slice(3, 5)
] // 결과: [1, 2, 10, 4, 5]
특정 조건을 가지고 값들을 필터링 해줄 수 있다.
numbers.filter(n => n > 3); // [4, 5]
numbers.filter(n => n !== 3) // [1, 2, 4, 5]
const numbers = [1, 2, 3, 4, 5];
// spread 함수 이용해 데이터 수정
[
...numbers.slice(0, 2),
9,
...numbers.slice(3, 5)
] // 결과: [1, 2, 9, 4, 5]
// map 이용해 데이터 수정
numbers.map(n => {
if(n === 3) {
return 9;
} else {
return n;
}
}) // 결과: [1, 2, 9, 4, 5]