[JS] push, pop method 구현하기

은비·2023년 10월 1일
1
post-thumbnail

Array.prototype.pushArray.prototype.pop method를 비슷하게 동작하도록 myMethod라는 method를 만들어서 구현해보려고 한다.

myMethod.push()

내가 만든 push는 배열, 추가할 요소 총 2개의 매개변수 받는다.
Array.prototype.push와 동일하게 비순수 함수로 만들어보았다.

  1. array[array.length]로 접근하여 array의 마지막 index에 item을 추가해준다.
  2. array를 return해준다.
// 비순수 함수
  push: (array, item) => {
    array[array.length] = item;
    return array;
  }

myMethod.push2()

위의 myMethod.push와는 다르게 순수 함수로 만들어 주었다.

push2는 배열, 추가할 요소 총 2개의 arguments를 갖는다.
순수 함수로 만들어주었기 때문에 원본 배열 array는 변경이 되지 않고 새로운 배열을 만들어서 return 해주는 방식으로 만들었다.

  1. 스프레드 연산자를 사용하여 매개변수로 받아온 array를 [...array]로 펼쳐준다.
  2. 풀어놓은 array에 스프레드 연산자와 함께 item을 추가하여 새로운 배열을 생성한다.
  3. 생성된 새로운 배열을 반환한다.
// 순수 함수
  push2: (array, item) => {
    return [...array, item];
  },

myMethod.pop()

배열에 젤 마지막에 있는 요소만 제거를 해주면 되기때문에 1개의 arguments만 갖는다.

  1. 배열의 length가 0인 경우 undefined를 return하도록 해주었다. (기존 Array.prototype.pop과 동일하게 하려고 undefined로 작성)
  2. length 프로퍼티를 사용하여 myPop 함수를 호출할때마다 마지막에 있는 요소를
    제거해준다.
 // 비순수 함수
  pop: (array) => {
    if (array.length === 0) return undefined;
    array.length = array.length - 1;
    return array;
  }

Array.protopype.push
Array.protopype.pop

0개의 댓글