코딩쌀롱
push()의 반환값 본문
문제 발생
[프로그래머스 소수만들기 문제]
얕은 복사를 한 arr에 push로 값을 넣고, 결과값(배열)을 newArr에 할당하려고 했다.
당연히 push()의 반환값이 실행 후 바뀐 배열일 거라고 생각하고....
문제 원인
push() 메서드의 반환값은 바뀐 배열의 길이다!!
그래서 console.log(newArr)를 했을 때 type이 number인 2가 반환됐던 것.
그와중에 나는 하필 숫자 2를 push를 해서 newArr값(길이)인 2랑 무슨 연관이 있는 줄 알았는데..
하필 문자열도 해본다는 것을 '2'라고 했다😅
마찬가지로 unshift() 메서드도 바뀐 배열의 길이를 반환한다.
shift(), pop()은 제거한 원소를 반환한다.
해결 방법
위 사진의 마지막 예시처럼 push의 반환값을 할당하지 않고, 얕은 복사한 것을 할당하고 그 배열에 push하면 된다.
원인을 알고 나서는, push 메서드가 원본 배열을 수정하기 때문에 굳이 반환값으로 수정된 배열을 반환하지 않아도 돼서 배열의 길이를 반환하는 것 같다는 생각이 들었다. 함수의 입력값, 반환값을 확실히 알고 있는 것이 중요한데 자주 쓰는 메서드의 반환값을 모르고 있었다는 것을 반성한다.😔
'개발공부' 카테고리의 다른 글
for문 안의 let 변수에 외부에서 접근하기(Block scope) (0) | 2020.12.24 |
---|---|
[프로그래머스_JS] 영어 끝말 잇기 (0) | 2020.12.22 |
new Array(3).fill([ ]) 문제 (0) | 2020.12.20 |
[프로그래머스_JS] 멀쩡한 사각형 (0) | 2020.12.18 |
Comments