코딩쌀롱

push()의 반환값 본문

개발공부

push()의 반환값

이브✱ 2020. 12. 21. 23:55

 

 

문제 발생

[프로그래머스 소수만들기 문제]

얕은 복사를 한 arr에 push로 값을 넣고, 결과값(배열)을 newArr에 할당하려고 했다.

당연히 push()의 반환값이 실행 후 바뀐 배열일 거라고 생각하고....

문제 원인

push() 메서드의 반환값은 바뀐 배열의 길이다!!

그래서 console.log(newArr)를 했을 때 type이 number인 2가 반환됐던 것.

그와중에 나는 하필 숫자 2를 push를 해서 newArr값(길이)인 2랑 무슨 연관이 있는 줄 알았는데..

하필 문자열도 해본다는 것을 '2'라고 했다😅

 

마찬가지로 unshift() 메서드도 바뀐 배열의 길이를 반환한다.

shift(), pop()은 제거한 원소를 반환한다.

해결 방법

위 사진의 마지막 예시처럼 push의 반환값을 할당하지 않고, 얕은 복사한 것을 할당하고 그 배열에 push하면 된다.

 

원인을 알고 나서는, push 메서드가 원본 배열을 수정하기 때문에 굳이 반환값으로 수정된 배열을 반환하지 않아도 돼서 배열의 길이를 반환하는 것 같다는 생각이 들었다. 함수의 입력값, 반환값을 확실히 알고 있는 것이 중요한데 자주 쓰는 메서드의 반환값을 모르고 있었다는 것을 반성한다.😔

 

 

 

 

Comments