배열 수정하기

새양말·2023년 8월 24일
0

내일배움캠프TIL

목록 보기
74/74
post-thumbnail

구현하고자 하는 기능:

클라이언트가 선택한 항목들을 순차적으로 배열에 저장하고,
특정 요소를 삭제하면 그 빈자리를 바로 채워 공백이 맨 뒤로 오게 하는 기능

첫번째 시도: splice()로 요소를 삭제하고 push()를 곧바로 해주어 반환하게 한다.

const array = [0, 1, 2, 3, 4, 5]; // 원본 배열

const copyArray = [...array]; // 배열 복사

const newArray = copyArray.splice(0, 2).push('','');
    
console.log(newArray); 
// 예상: [2, 3, 4, 5, '', ''] 결과: 4

splice메소드는 원본 배열을 변경하므로 복사를 해주어야겠다고 생각하고 진행했다.
하지만 복사한 배열엔 적용되지 않았다.
원본 배열에 splice와 push를 따로 해주어야만 예상했던 배열을 얻을 수 있었다.

const array = [0, 1, 2, 3, 4, 5]; // 원본 배열

array.splice(0, 2);
array.push('','');
    
console.log(array); // [2, 3, 4, 5, '', '']

두번째 시도: 삭제되어 ''로 변경된 요소를 filter()한 배열과 ''만 filter()한 배열을 concat()한다.

const words = ['', '', '', 'a', 'b', 'c'];

const result = words.filter((x) => x !== '').concat(words.filter((x) => x === ''));

console.log(result);
// Expected output: Array ['a', 'b', 'c', '', '', '']

이 방법을 선택한 이유는 2가지이다.
1. 원본 배열을 복사할 수 있음
2. 삭제해야할 요소의 인덱스를 알지 않아도 가능

profile
매번 기합넣는 양말

0개의 댓글