자바스크립트 배열 내장함수 중 하나이다.
배열을 특정 함수를 사용해 전체적으로 변환해주고 싶을때 사용하는 함수이다.
리액트에서 내부적으로 제거/업데이트/추가를 할 때 해당 작업을 효율적으로 하기 위해 필요하다.
배열을 렌더링할 때는 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]