스터디 8회차 주간 공부 내용 - JS Array.prototype.push

잔잔바리디자이너·2022년 4월 22일
0

Study

목록 보기
12/19
post-thumbnail

Array.prototype.push

const arr = [1,2]
arr.push(3,4)  // 4
console.log(arr)  // [1,2,3,4]]
  • push 메서드는 인수로 전달받은 모든 값을 원본 배열의 마지막 요소로 추가
  • 변경된 length 프로퍼티 값을 반환
  • 원본 배열을 직접 변경 (때문에 ES6의 스프레드 문법을 사용하는 편이 좋다.)

push 메서드는 성능 면에서 좋지 않다. 마지막 요소로 추가할 요소가 하나뿐이라면 push 메서드 말고 length 프로퍼티를 사용해 직접 추가하는것이 더 빠르다.

const arr = [1,2]
arr[arr.length] = 3
console.log(arr) // [1,2,3]]

🤔흠 push의 동작 원리가 뭘까?

for문으로 같은 동작을 하는 함수를 구현해보았다.

const arr = [1,2]
function push(arr,...args){
  let from = arr.length;
  for(let i = 0; i < args.length; i++){
			     arr[from + i] = args[i]
  }
  return arr
}
push(arr,8,9,10) 
console.log(arr) // [ 1, 2, 8, 9, 10 ]

push는 어떤 경우에 사용될까?

  • 배열에 원소를 추가할 때
  • 두개의 배열을 병합할 때
  • ❗️배열처럼 생긴 객체를 사용할 때 ( Using an object in an array-like fashion) - 유사배열

유사배열과 push 예시

const obj = {
    length: 0,
    addElem(elem) {
        // obj.length is automatically incremented
        // every time an element is added.
        [].push.call(this, elem)
    }
}

obj.addElem(0)
obj.addElem({})
obj.addElem([])
console.log(obj)

👀이전에 push를 사용해서 풀었던 문제 다시 보기

문제 설명
자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다.
제한 조건
n은 10,000,000,000이하인 자연수입니다.

제출했었던 답:

function solution(n) {
    const str = n + '';
    var answer = [];
    for(let i = str.length-1; i >= 0; i--){        
        answer.push(+str[i])
    }
    return answer;
}

0개의 댓글