프로그래밍 언어/HTML,CSS,JS

새 배열을 만들지 않고 기존 JavaScript 배열을 다른 배열로 확장하는 방법

Rateye 2021. 12. 8. 11:03
728x90
반응형
질문 : 새 배열을 만들지 않고 기존 JavaScript 배열을 다른 배열로 확장하는 방법

기존 자바 스크립트 배열을 다른 배열로 확장하는 방법, 즉 Python의 extend 메소드를 에뮬레이션하는 방법이없는 것 같습니다.

다음을 달성하고 싶습니다.

>>> a = [1, 2]
[1, 2]
>>> b = [3, 4, 5]
[3, 4, 5]
>>> SOMETHING HERE
>>> a
[1, 2, 3, 4, 5]

a.concat(b) 메서드가 있다는 것을 알고 있지만 단순히 첫 번째 배열을 확장하는 대신 새 배열을 만듭니다. 내가하면 효율적으로 작동하는 알고리즘 싶습니다 a 보다 훨씬 큰 b (즉, 하나를 복사하지 않는 a ).

참고 : 이것은 배열에 무언가를 추가하는 방법 의 중복이 아닙니다. -여기서 목표는 한 배열의 전체 내용을 다른 배열에 추가하고이를 "제자리에서"수행하는 것입니다. 즉, 확장 배열의 모든 요소를 복사하지 않고 수행합니다.

답변

.push 메서드는 여러 인수를 사용할 수 있습니다. 스프레드 연산자 를 사용하여 두 번째 배열의 모든 요소를 .push .

>>> a.push(...b)

브라우저가 ECMAScript 6을 지원하지 않는 경우 대신 .apply

>>> a.push.apply(a, b)

또는 더 명확하다고 생각하는 경우 :

>>> Array.prototype.push.apply(a,b)

b 가 너무 길면 이러한 모든 솔루션이 스택 오버플로 오류와 함께 실패합니다 (문제는 브라우저에 따라 약 100,000 개 요소에서 시작됨).
b 가 충분히 짧다는 것을 보장 할 수없는 경우 다른 답변에 설명 된 표준 루프 기반 기술을 사용해야합니다.

출처 : https://stackoverflow.com/questions/1374126/how-to-extend-an-existing-javascript-array-with-another-array-without-creating
728x90
반응형