[javascript] Array.size () 대 Array.length

둘의 차이점은 무엇입니까?

그래서 나는 그것이 array.size()함수 인 동안 array.length속성 이라는 것을 알고 있습니다. 다른 것을 사용하는 유스 케이스가 있습니까? 하나 더 효율적입니까? ( .length메소드 호출이 아닌 속성이므로 상당히 빠르다고 생각 합니까?) 왜 느린 옵션을 사용합니까? 하나 또는 다른 브라우저와 호환되지 않는 브라우저가 있습니까?

  var x = [];
  console.log(x.size());
  console.log(x.length);
  console.log(x.size()==x.length);
  x =[1,2,3];
  console.log(x.size());
  console.log(x.length);
  console.log(x.size()==x.length);

인쇄합니다 :

  0, 0, true
  3, 3, true



답변

Array.size ()는 유효한 메소드가 아닙니다

항상 길이 속성을 사용하십시오

기본 프로토 타입 메소드가 아니기 때문에 size 프로토 타입을 배열 프로토 타입에 추가하는 라이브러리 또는 스크립트가 있습니다. 이것은 일반적으로 커스텀 게터에 대한 지원을 추가하기 위해 수행됩니다. 이것을 사용하는 예는 배열의 메모리에서 크기를 얻고 싶을 때입니다 (이 이름에 유용 할 것이라고 생각할 수있는 유일한 것입니다).

Underscore.js는 불행히도 size실제로 객체 또는 배열의 길이를 반환 하는 메소드를 정의합니다 . 불행히도 함수의 길이 속성은 명명 된 인수의 수로 정의되므로 함수는 대체를 사용해야한다고 선언하고 크기를 선택했습니다 (수는 더 나은 선택이었습니다).


답변

.size()하지 의 기본 JS 기능 Array(적어도하지 내가 아는 것을 모든 브라우저에서).

.length 사용해야 합니다.


만약

.size() 않는 페이지에 대한 작업을, 당신이 같이 포함 된 모든 추가 라이브러리가없는 있도록 프로토 타입 으로 일 처리되어Array프로토 타입을.

또는

브라우저에 Array프로토 타입 과 연결되는 플러그인이있을 수 있습니다 .


답변

.size()함수는 Jquery 및 기타 여러 라이브러리에서 사용할 수 있습니다.

.length속성은 인덱스가 정수인 경우에만 작동합니다.

length속성 다음 유형의 배열에서 작동합니다.

var nums = new Array();
nums[0] = 1;
nums[1] = 2;
print(nums.length); // displays 2

length속성은 되지 않습니다 배열 이러한 유형의 작업 :

var pbook = new Array();
pbook["David"] = 1;
pbook["Jennifer"] = 2;
print(pbook.length); // displays 0

따라서 귀하의 경우 .length속성 을 사용해야합니다 .


답변

.size() jQuery 라이브러리입니다. jQuery 라이브러리를 자신의 프로젝트로 가져온 다른 사람과 혼동하거나 다른 사람을 데려 갔을 것입니다.

당신이 원하는 경우 jQuery를가 수입하고 같이 쓰는 것 $(array).size(), 그것은 배열의 길이를 반환합니다.


답변

array.length 반드시 배열의 항목 수는 아닙니다.

var a = ['car1', 'car2', 'car3'];
a[100] = 'car100';
a.length; // 101

배열의 길이가 가장 높은 인덱스보다 하나 더 큽니다.

앞에서 언급했듯이 Array.size()올바른 방법은 아닙니다.

추가 정보


답변

‘length’속성은 숫자 키가있는 배열의 (last_key + 1)을 반환합니다.

var  nums  =  new  Array ();
nums [ 10 ]  =  10 ;
nums [ 11 ]  =  11 ;
log.info( nums.length );

12를 인쇄합니다!

이것은 작동합니다 :

var  nums  =  new  Array ();
nums [ 10 ]  =  10 ;
nums [ 11 ]  =  11 ;
nums [ 12 ]  =  12 ;
log.info( nums.length + '  /  '+ Object.keys(nums).length );


답변

.size () 메소드는 jQuery 1.8부터 사용되지 않습니다. 대신 .length 속성을 사용하십시오.

참조 : https://api.jquery.com/size/