2011-03-17 6 views
4

두 번째 경고가 0으로 표시되는 이유를 설명 할 수 있습니까?자바 스크립트 배열의 길이 메서드

var pollData = new Array(); 
    pollData['pollType'] = 2; 
    alert(pollData['pollType']); // This prints 2 
    alert(pollData.length); // This prints 0 ?? 
+0

그 문제를 일으키고 있습니다. 배열에 신경 쓰지 마라. –

답변

8

숫자 인덱스를 추가 할 때만 배열의 길이가 변경됩니다. 예를 들어,

pollData["randomString"] = 23; 

의 길이에 영향을주지 않습니다,하지만

var pollData = []; 
pollData["45"] = "Hello"; 
pollData.length; // 46 

는 키가 숫자 나 문자열이 있다면 그만큼 중요하지 않습니다 (46) 참고로 길이를 변경 그것은 숫자 정수입니다.

게다가,이 방법으로 배열을 사용하지 않아도됩니다. 배열이 객체이기 때문에 더 많은 부작용을 고려해야하며 JavaScript에서는 객체가 임의의 키를 문자열로 저장할 수 있습니다.

+0

키를 'pollType'문자열로 사용할 수 있습니까? – edwinNosh

+0

예, 가능합니다. 당신의 질문에있는 예제는 정확히 그것을합니다. 그러나 그것은 좋은 습관이 아닙니다. 배열과 관련된 추가 데이터를 어딘가에 저장 하시겠습니까? – Anurag

+0

길이는 여전히 0이므로 어레이에 추가하지 않습니다. – edwinNosh

2

아직 배열에 아무것도 넣지 않았기 때문에. 배열 에 동적으로 생성 된 pollType 속성에 할당 한 것은입니다.

숫자 색인을 사용하면 배열이 자동으로 길이를 유지합니다. 예를 들어

var arr = [ ]; // same as new Array() 
arr[2] = 'Banana!'; 
alert(arr.length); // prints 3 (indexes 0 through 2 were created) 
0

length 재산권 고려 이름 인덱스되는 배열의 해당 멤버 소요 (같은 '1', '2', '3', ...).

0

JavaScript의 배열에는 숫자 인덱스 만 있습니다.

본질적으로 위에서 수행 한 개체를 사용하여 해당 배열 개체의 속성을 설정합니다.

0

array.length는 배열에 저장되는 값의 수를 반환합니다. 첫 번째 경고는 'pollType'위치의 값을 반환합니다.

자바 스크립트 배열 도움을 필요로 할 때 항상 사용하는 참조 가이드는이 페이지입니다 http://www.hunlock.com/blogs/Mastering_Javascript_Arrays

나는 또한이 문제로 실행 수 있으므로, 연관 배열을 지원하지 않음 제목 자바 스크립트에서이 말씀을 읽을 것

또한.

+0

그냥 Array.length가하는 것처럼 보이지만, 그렇게 행동하지 않는다는 것을 기억하고 싶습니다. 여기 : http://jsfiddle.net/6WrkT/1/ –

0

var pollData = Array();

function test() { 
    pollData[0] = 2 
    alert(pollData[0]); 
    alert(pollData.length); 
} 

// [x]는 배열 위치입니다. 따라서 [ 'polltype']이 (가)

관련 문제