상세 컨텐츠

본문 제목

TIL 22일차

TIL

by 리액트바오 2021. 9. 24. 23:53

본문

배열 코플릿을 처음부터 다시 풀어보았는데 처음 풀때보단 조금은 더 잘 풀 수 있었다. 문제를 풀면서 헷갈리거나 어려웠던 문제는 다시 풀어보기위해 따로 기록해두었다. 그 중 23번 문제를 기록해보려한다.

 

배열 23번 문제

문제
배열과 인덱스를 입력받아 해당 인덱스의 요소를 제외한 배열을 리턴해야 합니다.

입력
인자 1 : arr
임의의 요소가 담긴 배열

인자 2 : n
number 타입의 인덱스

출력
인덱스에 해당하는 요소를 제외한 배열을 리턴해야 합니다.

주의 사항
배열의 길이보다 큰 인덱스를 입력받은 경우, 배열 그대로를 리턴해야 합니다.

입출력 예시
let output = getAllElementsButNth(['a', 'b', 'c'], 1);
console.log(output); // --> ['a', 'c']

 

나의 풀이 

function getAllElementsButNth(arr, n) {
if( arr.length <= n){
  return arr
}
arr.splice(n, 1)
return arr
}

지금까지는 거의 slice만 사용하다 splice를 사용해보았다. 

"splice() 메서드는 배열의 기존 요소를 삭제 또는 교체하거나 새 요소를 추가하여 배열의 내용을 변경합니다." 출처: mdn

splice를 이용하여 n자리의 요소를 1개 삭제하는 방법으로 풀었다. 레퍼런스를 보니 다른 방법으로 풀이가 되어 있었다.

 

Reference Code

function getAllElementsButNth(arr, n) {
  let result = [];

  for (let i = 0; i < arr.length; i++) {
    if (i !== n) {
      result.push(arr[i]);
    }
  }

  return result;
}

나는 잘라내는 방식으로 풀었다면 레퍼런스 코드에서는 빈배열이 있는 변수를 하나 선언한 후, 리턴할 값만 하나씩 넣어주는 방식이었다.

arr의 길이 보다 작을때 까지 for문을 돌리며 i가 n과 다르다면 변수 result에 arr[i]를 push로 넣어서 마지막에 해당 arr[i]이 들어간 result를 리턴한다. 코딩은 이렇게 다른 다양한 방법으로 풀 수 있다는것에서 재미있게 느껴진다.

 

 

Today's Key🔑

  • splice() 메서드는 배열의 기존 요소를 삭제 또는 교체하거나 새 요소를 추가하여 배열의 내용을 변경한다.
  • 매일 조금씩이라도 코플릿 문제 풀기!

 

'TIL' 카테고리의 다른 글

TIL 24일차  (0) 2021.09.25
TIL 23일차 - DOM  (0) 2021.09.25
TIL 21일차  (0) 2021.09.21
TIL 20일차  (0) 2021.09.19
TIL 19일차  (0) 2021.09.18

관련글 더보기