Heim  >  Artikel  >  Web-Frontend  >  Erstellen von ArrayList-Beispielcode in JavaScript_Javascript-Tipps

Erstellen von ArrayList-Beispielcode in JavaScript_Javascript-Tipps

WBOY
WBOYOriginal
2016-05-16 16:36:061564Durchsuche

Wir haben die API des JavaScript-Arrays bereits früher eingeführt. Das Array selbst ist sehr leistungsfähig. Es kann jeden Typ speichern und seine Länge wird automatisch erweitert. Es bietet auch Durchlauf-, Filter- und andere Methoden zum Betreiben von Arrays.

Es übertrifft einfach das Java-Array (feste Länge, einzelner Typ). Die Sammlungsklasse in Java soll den Mangel an Arrays ausgleichen. Die meisten ihrer unteren Schichten verwenden Object []-Speicher, der nur eine dynamische Erweiterungsstrategie bietet. Natürlich ist der Reichtum der JDK-API für andere Sprachen schwierig übereinstimmen.

Aber das tut meiner Liebe zu Java und JavaScript keinen Abbruch.

Java ist wie eine Frau mittleren Alters. Beim Aufbau eines großen verteilten Systems kann man ihre aufrichtigen Lehren widerspiegeln

Und JavaScript ist wie ein aufkeimendes Mädchen. Jedes Mal, wenn es blüht, wird es Wellen in Ihrem Herzen hervorrufen. Es muss sorgfältig trainiert werden, bevor es von Ihnen verwendet werden kann.

Okay, verzeihen Sie mir die unangemessene Metapher, lass uns darüber reden.

/** 
*@class ArrayList 
*@description 
*@time 2014-09-16 21:59 
*@author StarZou 
**/ 

function ArrayList(arr) { 
this._elementData = arr || []; 
} 

var arrayListPrototype = { 

'_arrayPrototype': Array.prototype, 

'_getData': function () { 
return this._elementData; 
}, 

'size': function () { 
return this._getData().length; 
}, 

'isEmpty': function () { 
return this.size() === 0; 
}, 

'contains': function (obj) { 
return this.indexOf(obj) > -1; 
}, 

'indexOf': function (obj) { 
var i , data = this._getData(), length = data.length; 
for (i = 0; i < length; i++) { 
if (obj === data[i]) { 
return i; 
} 
} 
return -1; 
}, 

'lastIndexOf': function (obj) { 
var i , data = this._getData(), length = data.length; 
for (i = length - 1; i > -1; i--) { 
if (obj === data[i]) { 
return i; 
} 
} 
return -1; 
}, 

'get': function (index) { 
return this._getData()[index]; 
}, 

'set': function (index, element) { 
this._getData()[index] = element; 
}, 

'add': function (index, element) { 
if (element) { 
this.set(index, element); 
} else { 
return this._getData().push(index); 
} 
}, 

'remove': function (index) { 
var oldValue = this._getData()[index]; 
this._getData()[index] = null; 
return oldValue; 
}, 

'clear': function () { 
this._getData().length = 0; 
}, 

'addAll': function (index, array) { 
if (array) { 
this._getData().splice(index, 0, array); 
} else { 
this._arrayPrototype.push.apply(this._getData(), index); 
} 
} 

}; 

ArrayList.prototype = arrayListPrototype;
// Test 代码 
var arr = new ArrayList([3, 6, 5, 'xyz', 'foo', 'xyz']); 

console.log(arr.contains('xyz')); 
console.log(arr.indexOf('xyz')); 
console.log(arr.lastIndexOf('xyz')); 
console.log(arr.get(2)); 
arr.addAll([1, 2, 3]); 
console.log(arr);

Der obige Code implementiert einen Teil davon, und es gibt noch Optimierungsbereiche,

In Zukunft werde ich Zeit haben, JavaScript zu schreiben, um Klassen zu simulieren, die Baum-, Stapel-, Warteschlangen-, Karten- und andere Datenstrukturen implementieren.

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