배열은 JavaScript에서 제공하는 내부 개체입니다. 그 안에 있는 요소를 추가(푸시)하고 삭제(이동)할 수도 있습니다. 배열에는 JavaScript를 사용합니다.
JavaScript의 언어 기능으로 인해 일반 개체에 속성을 동적으로 추가하고 삭제할 수 있습니다. 따라서 Object는 JS의 특별한 컬렉션으로 간주될 수도 있습니다. 배열과 객체의 특성을 비교해 보겠습니다.
배열:
새로운 기능: var ary = new Array(); 또는 var ary = [];
추가: ary. push(value);
삭제: ary[n] 삭제;
트래버스: for ( var i=0 ; i < ary.length ; ++i ) ary[i];
객체:
신규: var obj = new Object(); 또는 var obj = {};
추가: obj[key] = value; )
삭제: delete obj[key];
Traverse: for ( var key in obj ) obj[key];
위의 비교를 통해 다음을 알 수 있습니다. 개체는 완전히 컬렉션으로 사용할 수 있습니다. 팝업 창을 사용하여 무한한 웹 페이지 메뉴(3)를 만들 때, 시뮬레이션된 컬렉션 개체이기도 한 Eric이 구현한 __MenuCache__를 소개했습니다.
Array에서 지정된 값을 검색하려면 전체 배열을 순회해야 합니다.
caba30eefb6ebbbd41890d8c813a4973Object의 이 기능을 사용하면 고유 문자열 컬렉션을 효율적으로 검색할 수 있습니다. 배열 순회 시간 복잡도는 O(n)인 반면, Object 순회 시간 복잡도는 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)을 사용하여 순회하지 마세요.
위 내용은 JavaScript_Javascript 튜토리얼의 배열, 컬렉션 및 효율성에 대한 내용입니다. 더 많은 관련 내용은 PHP 중국어 웹사이트(www.php.cn)를 참고하세요!