[javascript] 배열 순회 시 요소 삭제하기

자바스크립트에서 배열을 순회하면서 특정 요소를 삭제해야하는 경우가 있습니다. 이를 위해선 몇 가지 방법을 사용할 수 있습니다. 여기서는 가장 흔하게 사용되는 방법을 소개하겠습니다.

1. filter 메소드 사용

Array.filter() 메소드는 배열의 모든 요소를 탐색하면서 주어진 조건에 맞는 요소만으로 이루어진 새로운 배열을 반환합니다. 이를 사용하여 삭제할 요소를 제외한 나머지 요소들로 구성된 새로운 배열을 생성할 수 있습니다.

const arr = [1, 2, 3, 4, 5];

const result = arr.filter(item => item !== 3);

console.log(result); // [1, 2, 4, 5]

2. splice 메소드 사용

Array.splice() 메소드는 배열에서 특정 위치의 요소를 삭제하고 필요한 경우 새로운 요소를 추가할 수도 있습니다. 이를 이용하여 특정 요소를 삭제할 수 있습니다.

const arr = [1, 2, 3, 4, 5];

const index = arr.indexOf(3);
arr.splice(index, 1);

console.log(arr); // [1, 2, 4, 5]

위의 예제에서는 indexOf 메소드를 사용하여 요소 “3”의 인덱스를 찾고, splice 메소드를 사용하여 해당 인덱스의 요소를 1개 삭제하였습니다.

3. for문과 splice 메소드 조합

또 다른 방법은 for문을 사용하여 배열을 순회하면서 요소를 삭제하는 것입니다. 이때는 splice 메소드를 사용해야 합니다. 하지만 이 방법은 조심해야할 점이 있습니다.

const arr = [1, 2, 3, 4, 5];

for(let i = arr.length - 1; i >= 0; i--){
  if(arr[i] === 3){
    arr.splice(i, 1);
  }
}

console.log(arr); // [1, 2, 4, 5]

for문을 역순으로 수행하는 이유는 순차적으로 요소를 삭제하는 경우 인덱스가 변경되기 때문입니다. 역순으로 순회하면 삭제할 요소를 만나더라도 다음 요소를 제대로 검사할 수 있습니다.

주의사항

배열을 순회하면서 요소를 삭제할 때에는 원본 배열이 변경됩니다. 따라서 이를 원하지 않는 경우에는 새로운 배열을 생성하거나 복사하여 작업하는 것이 좋습니다.

결론

배열을 순회하면서 요소를 삭제하는 방법에 대해 알아보았습니다. filter 메소드나 splice 메소드를 사용하여 요소를 삭제할 수 있습니다. 단, 주의할 점은 원본 배열이 변경된다는 것입니다. 적절한 방법을 선택하여 배열 요소를 삭제해보세요.