Rumah  >  Artikel  >  hujung hadapan web  >  Membina kod contoh ArrayList dalam petua JavaScript_javascript

Membina kod contoh ArrayList dalam petua JavaScript_javascript

WBOY
WBOYasal
2016-05-16 16:36:061565semak imbas

Kami memperkenalkan API Tatasusunan JavaScript sebelum ini, tatasusunan itu sendiri sangat berkuasa Ia boleh menyimpan sebarang jenis, dan panjangnya diperluaskan secara automatik.

Ia hanya mengalahkan tatasusunan Java (panjang tetap, jenis tunggal). Kelas koleksi di Java adalah untuk mengimbangi kekurangan tatasusunan Kebanyakan lapisan bawahnya menggunakan storan Object [], yang hanya menyediakan strategi pengembangan dinamik Sudah tentu, kekayaan API JDK sukar untuk bahasa lain perlawanan.

Tetapi ia tidak menghalang kecintaan saya terhadap Java dan JavaScript.

Jawa adalah seperti wanita pertengahan umur Anda sentiasa dapat melihat pesonanya dalam JDK Apabila membina sistem pengedaran yang besar, ajarannya yang ikhlas dapat dicerminkan

Dan JavaScript adalah seperti seorang gadis yang baru berbunga, ia akan membangkitkan riak dalam hati anda. Ia mesti dilatih dengan teliti sebelum boleh digunakan oleh anda.

Baiklah, maafkan saya atas metafora yang tidak sesuai, mari bercakap mengenainya.

/** 
*@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);

Kod di atas melaksanakan sebahagian daripadanya, dan masih terdapat kawasan pengoptimuman,

Pada masa hadapan, saya akan mempunyai masa untuk menulis JavaScript untuk mensimulasikan kelas yang melaksanakan Struktur Pokok, Tindanan, Baris Gilir, Peta dan lain-lain.

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn