Meskipun array adalah objek dalam JavaScript, tidak disarankan untuk menggunakan loop untuk melintasi array. Faktanya, ada banyak alasan untuk mencegah kita menggunakan loop untuk array.
Karena for in in loop akan menyebutkan semua properti pada rantai prototipe, dan satu -satunya cara untuk mencegahnya adalah dengan menggunakan HasownProperty untuk menilai, yang akan jauh lebih lambat daripada normal untuk loop.
Traversal
Untuk kinerja optimal untuk melintasi array, cara terbaik adalah dengan menggunakan klasik untuk loop.
Salinan kode adalah sebagai berikut:
var list = [1, 2, 3, 4, 5, ...... 100000000];
untuk (var i = 0, l = list.length; i <l; i ++) {
console.log (daftar [i]);
}
Ada trik tambahan di sini, yaitu untuk menyimpan panjang array oleh l = list.length.
Meskipun panjang properti didefinisikan dalam array itu sendiri, masih ada overhead di setiap traversal loop. Meskipun mesin JavaScript terbaru mungkin telah melakukan optimasi kinerja untuk situasi ini, Anda tidak dapat menjamin bahwa kode JavaScript Anda akan selalu berjalan di browser ini.
Faktanya, loop tanpa panjang cache jauh lebih lambat dari loop dengan panjang cache.
atribut panjang
Meskipun atribut panjang hanya mengembalikan jumlah elemen dalam array melalui metode Getter, array dapat dipotong dengan metode setter.
Salinan kode adalah sebagai berikut:
var foo = [1, 2, 3, 4, 5, 6];
foo.length = 3;
foo; // [1, 2, 3]
foo.length = 6;
foo.push (4);
foo; // [1, 2, 3, tidak terdefinisi, tidak terdefinisi, tidak terdefinisi, 4]
Menetapkan angka yang lebih kecil ke atribut panjang akan memotong array, dan jika ditetapkan angka yang lebih besar, itu tidak akan memotong array.
Meringkaskan
Untuk kinerja yang optimal, disarankan untuk menggunakan loop untuk loop untuk di loop sambil caching atribut panjang.
Ada juga objek array yang tidak memiliki metode, hanya panjang atribut yang unik. Objek string memiliki metode panjang ~~