GITHUB
배열에서 특정 요소 제거하는 방법
BLOGProject
Seohyun
Develop
19 Jul 2023
배열에서 특정 요소 제거하는 방법

배열의 마지막 요소 제거

pop() 메서드는 배열의 마지막 요소를 제거하고 반환합니다.

const numArray = [1, 2, 3, 4, 5];
const result = numArray.pop();
console.log(`numArray values: ${numArray}`);
console.log(`value: ${result}`);
numArray values: 1,2,3,4
value: 5

배열의 첫 번째 요소 제거

shift() 메서드는 배열의 첫 번째 요소를 제거하고 반환합니다.

const numArray = [1, 2, 3, 4, 5];
const result = numArray.shift();
console.log(`numArray values: ${numArray}`);
console.log(`value: ${result}`);
numArray values: 2,3,4,5
value: 1

인덱스로 요소 제거

인덱스로 제거할 요소를 식별하는 경우 delete 연산자를 사용할 수 있습니다. 제거하려는 요소를 사용하려면 splice() 메서드를 사용합니다.

delete 연산자

delete 연산자를 사용해 인덱스로 요소를 제거합니다.

const numArray = [1, 2, 3, 4, 5];
delete numArray[1];
console.log(`numArray values: ${numArray}`);
numArray values: 1,,3,4,5

splice()

제거할 요소를 사용하고자 할 때에는 splice() 메서드를 사용합니다. splice() 메서드는 2개의 인수(argument)를 사용하는데 삭제하고 싶은 요소의 인덱스와 제거할 요소의 개수입니다. splice() 메서드는 원래 배열에서 제거된 새 배열을 반환합니다. 즉 원래 배열은 삭제된 값은 포함하지 않으며 길이가 업데이트 된 배열이 됩니다.

numArray values: 1,3,4,5
const numArray = [1, 2, 3, 4, 5];
const result = numArray.splice(1, 1);
console.log(`numArray values: ${numArray}`);
console.log(`value: ${result}`);
numArray values: 1,3,4,5

numArray의 인덱스 1부터 1개의 요소를 splice() 메서드를 이용해 제거하는 코드입니다.

splice() 메서드를 이용해 제거한 배열을 새 배열로 반환해 result 변수에 저장했습니다. 원본 배열인 numArray는 splice()에 의해 제거된 요소는 포함하지 않은 새로운 배열이 됩니다. 원본 배열이 변경된 것을 유의해야 합니다.

value로 요소 제거

value로 제거할 요소를 식별하는 경우 indexOf() 메서드로 해당 인덱스를 확인해 요소를 삭제할 수 있습니다.

console.log(`numArray values: ${numArray}`);
const numArray = [1, 2, 3, 4, 5];
const index = numArray.indexOf(2);
const result = numArray.splice(index, 1);
numArray values: 1,3,4,5
console.log(`numArray values: ${numArray}`);
numArray values: 1,3,4,5

indexOf() 메서드를 이용해 numArray 배열에서 value가 2인 첫 번째 인덱스를 index 변수에 저장합니다. 이를 이용해 splice() 메서드로 해당 인덱스의 요소를 1개 제거하여 새로운 배열을 반환해 result에 저장합니다.

원본 배열과 splice() 메서드에 의해 제거된 요소를 확인해 보겠습니다.

원본 배열은 splice() 메서드에 의해 바뀌었음을 확인할 수 있습니다.

제거할 요소를 사용 하고자 할 때에는 filter(), indexOf(), splice() 메서드들을 조합해 사용할 수 있습니다.

indexOf()와 splice() 조합

indexOf() 메서드는 해당 파라미터와 일치하는 value가 처음 등장하는 index를 반환하며, 만약 일치하는 value가 없는 경우 -1을 반환합니다.

myArray values: 1,3,4,5
const numArray = [1, 2, 3, 4, 5];
const index = numArray.indexOf(2);
const result = numArray.splice(index, 1);
console.log(`numArray values: ${numArray}`);
console.log(`value: ${result}`);
myArray values: 1,3,4,5

배열에서 제거하려는 요소의 value를 indexOf() 메서드에 전달해 배열의 해당 값과 일치하는 요소의 인덱스를 반환합니다. 그 후 splice() 메서드를 사용해 배열에서 해당 인덱스 요소를 제거합니다.

filter()

filter() 메서드는 필수 인수로 함수를 받습니다. 이 함수는 currentValue라는 하나의 매개변수가 필요하며, 이는 filter() 메서드가 배열을 순환하면서 현재 처리 중인 요소를 나타냅니다.

console.log(`numArray values: ${numArray}`);
const numArray = [1, 2, 3, 4, 5];
function removeValue(value, index, arr) {
// 배열 인덱스의 값이 2와 일치한 경우
if (value === 2) {
// 원본배열에서 해당 값 제거
arr.splice(index, 1);
return true;
}
return false;
}
const result = numArray.filter(removeValue);
numArray values: 1,3,4,5
console.log(`numArray values: ${numArray}`);
numArray values: 1,3,4,5

currentValue가 제거하려는 요소의 값이면 true를 반환하고, 그렇지 않으면 false를 반환해야 합니다. filter() 메서드는 currentValue와 일치하는 배열의 값을 포함하는 배열을 반환합니다. filter() 메서드가 반환하는 값은 원래 배열에서 제거되지 않지만, 이 기능은 filter()에 전달되는 함수에 추가할 수 있습니다. 이 코드에서는 splice() 메서드를 이용해 원본 배열에도 요소가 같이 제거되어 업데이트 될 수 있도록 하였습니다.

원본 배열과 제거하고자 하는 요소를 확인해 보겠습니다.

filter()는 원본 배열을 변형 시키지 않지만 filter() 메서드에 전달하는 함수에 splice() 메서드를 사용해 원본 배열을 변형 시키는 기능이 추가된 것을 볼 수 있습니다.

© 2024 Park Seohyun