과제 : 특정 범위에 속하는 요소 찾기(배열 변경하기)

라용·2022년 12월 2일
0

모던 JavaScript 튜토리얼 내용 중 일부 문제를 정리한 내용입니다.

배열 arr 의 요소 중 a 와 b 사이에 속하지 않는 요소는 삭제해주는 함수 filterRangeInPlace(arr, a, b) 함수를 만드는 문제다. 이때 작성한 함수는 기존 배열을 변경하기만 하고 아무것도 반환하지 않아야 한다. 이렇게 기존 배열을 변경해야 한다면 map 이나 filter 를 연상하면 안된다. 이런 메서드들은 새로운 배열을 반환하니, 기존 배열을 변경한다면, 특히 특정 인덱스의 요소만 삭제한다면 splice 를 떠올려야 한다. 기억해두자. 배열 변경.. 특히 요소 삭제는 splice.

// 해당 배열의 index 에 해당하는 요소를 deleteCount 만큰 제거

arr.splice(index [, deleteCount])

for 문으로 배열 요소를 순회하며 a 와 b 사이에 속하지 않는 요소를 찾아 splice 로 제거하는 함수를 짜보면 아래와 같다.

let arr = [5, 3, 8, 1];

const filterRangeInPlace = (arr, a, b) => {
  for (let i = 0; i < arr.length; i++) { 
    if(arr[i] < a || arr[i] > b) { // 해당 값이 a 와 b 사이에 속하지 않을 때
      arr.splice(i, 1); // 그 요소의 인덱스를 찾아서 1개 제거
    }
  }
}

filterRangeInPlace(arr, 1, 4); 

arr; // [3, 1]
profile
Today I Learned

0개의 댓글