Heim  >  Artikel  >  Web-Frontend  >  Beispielanalyse einer js-Array-Operation

Beispielanalyse einer js-Array-Operation

小云云
小云云Original
2018-03-26 15:20:371419Durchsuche

Dieser Artikel teilt Ihnen hauptsächlich die Analyse von Beispielen für js-Array-Operationen mit, hauptsächlich in Form von Code, in der Hoffnung, allen zu helfen.

Verschiebung: Löschen Sie das erste Element des ursprünglichen Arrays und geben Sie den Wert des gelöschten Elements zurück. Wenn das Array leer ist, geben Sie undefiniert zurück

var a = [1,2,3,4,5];   
var b = a.shift(); //a:[2,3,4,5] b:1

unshift: Parameter am Anfang des ursprünglichen Arrays hinzufügen und die Länge des Arrays zurückgeben

var a = [1,2,3,4,5];   
var b = a.unshift(-2,-1); //a:[-2,-1,1,2,3,4,5] b:7

Hinweis: Der Testrückgabewert unter IE6.0 ist immer undefiniert, FF2.0 Der Rückgabewert des nächsten Tests ist 7, daher ist der Rückgabewert dieser Methode unzuverlässig. Wenn der Rückgabewert benötigt wird, kann anstelle dieser Methode splice verwendet werden.

pop: löscht das letzte Element des ursprünglichen Arrays und gibt den Wert des gelöschten Elements zurück; wenn das Array leer ist, wird undefiniert zurückgegeben

var a = [1,2,3,4,5];   
var b = a.pop(); //a:[1,2,3,4] b:5

push: Parameter am Ende des ursprünglichen Arrays hinzufügen und die Länge des Arrays zurückgeben

var a = [1,2,3,4,5];   
var b = a.push(6,7); //a:[1,2,3,4,5,6,7] b:7

concat: Ein neues Array zurückgeben bestehend aus dem Hinzufügen von Parametern zum ursprünglichen Array

var a = [1,2,3,4,5];   
var b = a.concat(6,7); //a:[1,2,3,4,5] b:[1,2,3,4,5,6,7]

splice(start,deleteCount,val1,val2,...): Löschen Sie deleteCount-Elemente von der Startposition und fügen Sie val1, val2 ein ,... .

var a = [1,2,3,4,5];   
var b = a.splice(2,2,7,8,9); //a:[1,2,7,8,9,5] b:[3,4]   
var b = a.splice(0,1); //同shift   
a.splice(0,0,-2,-1); var b = a.length; //同unshift   
var b = a.splice(a.length-1,1); //同pop   
a.splice(a.length,0,6,7); var b = a.length; //同push

reverse: Kehrt das Array um

var a = [1,2,3,4,5];   
var b = a.reverse(); //a:[5,4,3,2,1] b:[5,4,3,2,1]

sort(orderfunction): Sortiert das Array nach die angegebenen Parameter

var a = [1,2,3,4,5];   
var b = a.sort(); //a:[1,2,3,4,5] b:[1,2,3,4,5]

slice(start,end): Gibt ein neues Array zurück, das aus Elementen zwischen dem angegebenen Startindex und dem Endindex im ursprünglichen Array

var a = [1,2,3,4,5];   
var b = a.slice(2,5); //a:[1,2,3,4,5] b:[3,4,5]

join(separator): Kombinieren Sie die Elemente des Arrays zu einer Zeichenfolge und verwenden Sie dabei ein Trennzeichen als Trennzeichen. Wenn es weggelassen wird, wird das Standardkomma als Trennzeichen verwendet

var a = [1,2,3,4,5];   
var b = a.join("|"); //a:[1,2,3,4,5] b:"1|2|3|4|5"

Array ist ein internes Objekt, das von JavaScript bereitgestellt wird. Wir können darin Elemente hinzufügen (pushen) und löschen (shift). Wir können die Elemente darin auch durch eine for-Schleife durchlaufen. Können wir also zusätzlich zum Array noch andere Sammlungen in JavaScript haben?

Aufgrund der Sprachfunktionen von JavaScript können wir Eigenschaften zu allgemeinen Objekten dynamisch hinzufügen und löschen. Daher kann Object auch als eine spezielle Sammlung von JS betrachtet werden. Vergleichen wir die Eigenschaften von Array und Objekt:

  //Array:  
  
/*新建:*/var ary = new Array(); 或 var ary = [];   
/*增加:*/ary.push(value);   
/*删除:*/delete ary[n];   
/*遍历:*/for ( var i=0 ; i < ary.length ; ++i ) ary[i];  
  
  //Object:  
  
/*新建:*/var obj = new Object(); 或 var obj = {};   
/*增加:*/obj[key] = value; (key为string)   
/*删除:*/delete obj[key];   
/*遍历:*/for ( var key in obj ) obj[key];

Aus dem obigen Vergleich können wir erkennen, dass Objekt als Sammlung verwendet werden kann und Sie das Popup verwenden können Fenster zum Erstellen unendlicher Ebenen. Im Webseitenmenü (3) habe ich den von Eric implementierten __MenuCache__ eingeführt, der ebenfalls ein simuliertes Sammlungsobjekt ist.

Wenn wir einen bestimmten Wert im Array abrufen möchten, müssen wir das gesamte Array durchlaufen:

var keyword = ;   
  for ( var i=0 ; i < ary.length ; ++i )   
  {   
  if ( ary[i] == keyword )   
  {   
  // todo   
  }   
  }

Und Um einen Eintrag mit einem angegebenen Schlüssel in Object abzurufen, müssen wir nur Folgendes verwenden:

var key = &#39;&#39;;   
  var value = obj[key];   
  // todo

 Object的这个特性可以用来高效的检索Unique的字符串集合,遍历Array的时间复杂度是O(n),而遍历Object的时间复杂度是O(1)。虽然对于10000次集合的for检索代价也就几十ms,可是如果是1000*1000次检索或更多,使用Object的优势一下就体现出来了。在此之前我做了一个mapping,把100个Unique的字符mapping到1000个字符串数组上,耗时25-30s!后来把for遍历改成了Object模拟的集合的成员引用,同样的数据量mapping,耗时仅1.7-2s!!! 
对于集合的遍历效率(从高到低):var value = obj[key]; > for ( ; ; ) > for ( in )。效率最差的就是for( in )了,如果集合过大,尽量不要使用for ( in )遍历。

相关推荐:

JS数组去重方法总结

js数组常用的一些排序法

JS数组添加元素方法总结

Das obige ist der detaillierte Inhalt vonBeispielanalyse einer js-Array-Operation. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn