>웹 프론트엔드 >JS 튜토리얼 >`map()`이 `new Array(count)`로 생성된 배열에서 정의되지 않은 값을 반환하는 이유는 무엇입니까?

`map()`이 `new Array(count)`로 생성된 배열에서 정의되지 않은 값을 반환하는 이유는 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-07 07:00:12734검색

Why Does `map()` Return Undefined Values on Arrays Created with `new Array(count)`?

Created with new Array(count)

JavaScript 배열로 작업할 때 특이한 동작에 주목할 필요가 있습니다. new Array(count) 구문을 사용하여 생성된 배열로 표시됩니다.

설명된 대로 아래 코드 조각에서 new Array(count)로 생성된 희소 배열(정의되지 않은 요소가 포함된 배열)에 대해 map()을 호출하면 정의되지 않은 값의 배열이 생성됩니다.

var x = new Array(3);
x.map(function() { return 0; }); // [undefined, undefined, undefined]

반대로, 동일한 작업을 수행하면 동일한 길이의 조밀한 배열(정의되지 않은 요소가 없는 배열)에 대한 연산은 예상대로 작동합니다.

var y = [undefined, undefined, undefined];
y.map(function() { return 0; }); // [0, 0, 0]

이러한 구별은 다음과 같은 사실에서 비롯됩니다. new Array(count)는 희소 배열을 생성합니다. 즉, 해당 요소에 기본값을 할당하지 않습니다. 결과적으로 map()은 정의되지 않은 요소에 대해 어떤 작업도 수행할 수 없으므로 정의되지 않은 값의 배열이 생성됩니다.

이 문제를 해결하려면 리터럴 배열 구문을 사용하여 조밀한 배열을 생성하거나 명시적으로 채울 수 있습니다. Array.prototype.fill()과 같은 메소드를 사용하여 원하는 기본값을 갖는 희소 배열.

위 내용은 `map()`이 `new Array(count)`로 생성된 배열에서 정의되지 않은 값을 반환하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.