>  기사  >  웹 프론트엔드  >  JavaScript_javascript 기술의 수집 및 효율성

JavaScript_javascript 기술의 수집 및 효율성

WBOY
WBOY원래의
2016-05-16 18:37:02865검색

이 컬렉션의 키는 String 타입만 가능하지만, 다양한 객체를 Key로 사용할 수 있는 Java의 다양한 컬렉션 클래스와 달리 일반적인 클라이언트 JS 기능을 구현하기에는 충분합니다. 마찬가지로, 모든 JS 내부 개체는 Object 개체에서 상속되기 때문에 JS의 Array 개체는 실제로 PHP의 배열 변수처럼 문자열을 배열 첨자로 사용할 수 있습니다. Bird Food Xuan에서.

배열은 JavaScript에서 제공하는 내부 개체입니다. 배열에 있는 요소를 추가(푸시)하고 삭제(이동)할 수도 있습니다. 배열 외에도 JavaScript에 다른 컬렉션이 있을 수 있나요?

JavaScript의 언어 기능으로 인해 범용 객체에 속성을 동적으로 추가하고 제거할 수 있습니다. 따라서 Object는 JS의 특별한 컬렉션으로 간주될 수도 있습니다. 배열과 객체의 특성을 비교해 보겠습니다:

배열:

새로운 기능: var ary = new Array(); 또는 var ary = []
추가: ary.push(value );
삭제: delete ary[n];
탐색: for ( var i=0 ; i < ary.length ; i ) ary[i];
신규: var obj = new Object(); 또는 var obj = {};
추가: obj[key] = value; (키는 문자열)
삭제: delete obj[key]; >Traversal: for ( var key in obj ) obj[key];

위의 비교에서 Object를 컬렉션으로 사용할 수 있음을 알 수 있습니다. 팝업 창을 사용하여 무한한 웹 페이지 메뉴( 3) Eric이 구현한 __MenuCache__를 소개했는데, 이 역시 시뮬레이션된 컬렉션 개체입니다.

배열에서 지정된 값을 검색하려면 전체 배열을 반복해야 합니다.




코드 복사

코드는 다음과 같습니다. var 키워드 = ; for ( var i=0 ; i < ary.length ; i )
{
if ( ary [i] = = 키워드 )
{
// todo
}
}


그리고 Object에서 지정된 키를 사용하여 항목을 검색하려면 다음만 수행하면 됩니다. 사용:

var key = '';
var value = obj[key];
// todo

Object의 이 기능을 사용하면 고유한 문자열 컬렉션을 효율적으로 검색할 수 있습니다. 배열 순회 시간 복잡도는 O(n)인 반면, 객체 순회 시간 복잡도는 O(1)입니다. 10,000개의 컬렉션을 검색하는 데 드는 비용은 수십 ms에 불과하지만 1,000*1,000개 이상의 검색을 수행하면 Object를 사용하는 것의 이점이 즉시 드러납니다. 그 전에는 100개의 고유 문자를 1000개의 문자열 배열에 매핑하는 매핑을 수행했는데, 이 작업에는 25~30초가 걸렸습니다! 나중에 순회는 Object에 의해 시뮬레이션된 컬렉션의 멤버 참조로 변경되었습니다. 동일한 양의 데이터 매핑에 1.7-2초만 소요되었습니다.

컬렉션의 순회 효율성을 위해(높은 수준에서 낮은 수준으로) ): var value = obj[key]; > for ( ; ; ) > 가장 효율적인 방법은 for(in)입니다. 컬렉션이 너무 크면 for(in)을 사용하여 순회하지 마세요.

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