>웹 프론트엔드 >JS 튜토리얼 >JavaScript_javascript 기술의 배열 기능 소개

JavaScript_javascript 기술의 배열 기능 소개

WBOY
WBOY원래의
2016-05-16 16:23:211125검색

Java 언어와 달리 JavaScript의 배열에는 세 가지 특징이 있습니다.

1. 유형이 없습니다. 배열의 구성원은 모든 유형이 될 수 있으며, 동일한 배열이 다양한 유형의 여러 구성원으로 구성될 수도 있습니다.
2. 길이는 가변적입니다. 배열의 길이는 동적으로 변경될 수 있으므로 JavaScript의 배열 액세스에는 범위를 벗어난 문제가 없습니다.
3. 불연속성. 배열에서 멤버의 위치는 연속적(0, 1, 2, 3...)이거나 불연속적일 수 있습니다. 모든 배열에는 길이라는 속성이 있습니다. 배열 구성원이 연속적인 경우 길이 값은 배열 구성원의 수와 일치하며, 배열 구성원이 불연속적인 경우 길이 값은 배열 구성원의 수보다 큽니다. 연속 배열과 비교하여 불연속 배열의 읽기 및 쓰기 성능은 더 나쁩니다.

실험:


코드 복사 코드는 다음과 같습니다.

var o = [42, "Sample Text", {x:88}];//JavaScript 배열의 유형이 지정되지 않았습니다.
console.log(o);//[42, "샘플 텍스트", 개체 {x=88}]
o[3] = 27;//JavaScript 배열은 동적입니다.
console.log(o);//[42, "샘플 텍스트", 개체 {x=88}, 27]
o[5] = 99;//JavaScript 배열이 희박합니다.
console.log(o);//[42, "샘플 텍스트", 객체 {x=88}, 27, 정의되지 않음, 99]


위의 예에서 볼 수 있듯이 불연속 배열의 경우 JavaScript는 누락된 멤버에 액세스할 때 정의되지 않은 값을 반환합니다. 배열이 연속적이지만 해당 멤버 중 하나가 정의되지 않은 경우 배열에 액세스한 결과는 동일합니다.


코드 복사 코드는 다음과 같습니다.

var a = [42, "샘플 텍스트", {x:88}, 27, 정의되지 않음, 99];
console.log(a);//[42, "샘플 텍스트", 객체 {x=88}, 27, 정의되지 않음, 99]


배열은 불연속적이고 멤버가 누락되어 있으며, 배열은 연속되어 있지만 정의되지 않은 멤버가 있습니다. 두 경우 모두 배열 내용에 액세스한 결과는 동일합니다. 하지만 둘 사이에는 여전히 미묘한 차이점이 있는데, 주로 배열 키에 대한 액세스입니다.


코드 복사 코드는 다음과 같습니다.

console.log(4 in o);//false
console.log(4 in a);//true


이 두 경우에서 콘텐츠에 액세스하여 얻은 결과는 동일하지만 내부 메커니즘은 완전히 다르다는 것을 알 수 있습니다. 배열이 불연속적이면 특정 멤버가 누락되어 해당 멤버에 액세스하면 JavaScript가 정의되지 않음을 반환합니다. ; 배열이 연속인 경우 모든 멤버가 존재하지만 일부 멤버의 값은 특별하며 정의되지 않습니다.

위의 예에서 볼 수 있듯이 JavaScript의 배열은 본질적으로 숫자를 키로 갖는 객체일 뿐이며 일반적인 키-값 쌍과 다르지 않습니다. 실제로 배열에 대한 읽기 및 쓰기 작업을 수행할 때 JavaScript는 매개변수를 양의 정수로 변환하려고 시도합니다. 변환이 성공하면 배열 작업이 수행됩니다(배열의 길이 속성이 자동으로 업데이트됩니다). 실패하면 매개변수는 문자열 이후에 일반 객체에 대한 읽기 및 쓰기 작업이 수행됩니다. 물론 자바스크립트 인터프리터 구현에서는 숫자를 키로 사용하는 배열의 기능에 대한 성능 최적화가 많이 이루어졌기 때문에 실제 사용에서는 객체의 키가 모두 숫자라면 직접 사용하면 된다. 배열 객체는 더 나은 결과를 얻을 것입니다.

배열을 정의하는 동안 JavaScript는 중복된 쉼표를 허용하고 두 쉼표 사이에 배열 구성원이 누락되는 것을 허용합니다.


코드 복사 코드는 다음과 같습니다.

var x = [1,2,3,];//후행 쉼표는 생략됩니다.
console.log(x.length);//3
                                 
var y = [1,,3];//멤버가 누락될 수 있습니다.
console.log(y);//[1, 정의되지 않음, 3]
console.log(1 in y);//false
console.log(y.length);//3


배열 생성을 위해 JavaScript는 네 가지 방법을 지원합니다:

1. 리터럴(예: 위 예의 대괄호 표현식)을 사용하여 배열 객체를 직접 만듭니다.
2. 매개변수를 전달하지 않고 Array() 생성자를 사용합니다. 이 경우에는 []와 동일한 효과를 갖는 빈 배열이 생성됩니다.
3. Array() 생성자를 사용하고 양의 정수를 배열 길이로 전달합니다. 이 경우 JavaScript는 이 배열을 저장하기 위해 해당 메모리 공간을 예약합니다. 현재 배열의 키가 정의되지 않았다는 점, 즉 배열에 멤버가 없다는 점은 주목할 가치가 있습니다. 효과는 [,,,,]와 같습니다
4. Array() 생성자를 사용하고 배열 멤버를 전달합니다.

실험:


코드 복사 코드는 다음과 같습니다.

var z = new Array(10);//메모리를 사전 할당했지만 아직 인덱스가 정의되지 않았습니다.
console.log(3 in z);//false

var m = new Array(42, 33, 99, "test", {k:99});
console.log(m);//[42, 33, 99, "test", 개체 {k=99}]


ECMAScript 5 표준에서는 Array.isArray()를 사용하여 객체가 배열인지 확인할 수 있습니다.
코드 복사 코드는 다음과 같습니다.

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