Menggunakan for...in
loop untuk sebuah array tidak salah, walaupun saya bisa menebak mengapa seseorang memberi tahu Anda bahwa:
1.) Sudah ada fungsi orde yang lebih tinggi, atau metode, yang memiliki tujuan untuk array, tetapi memiliki lebih banyak fungsi dan sintaks yang lebih ramping, yang disebut 'forEach': Array.prototype.forEach(function(element, index, array) {} );
2.) Array selalu memiliki panjang, tetapi for...in
dan forEach
tidak menjalankan fungsi untuk nilai apa pun 'undefined'
, hanya untuk indeks yang memiliki nilai yang ditentukan. Jadi jika Anda hanya menetapkan satu nilai, loop ini hanya akan mengeksekusi fungsi sekali, tetapi karena array dihitung, itu akan selalu memiliki panjang hingga indeks tertinggi yang memiliki nilai yang ditentukan, tetapi panjang itu bisa luput dari perhatian ketika menggunakan ini loop.
3.) Standar untuk loop akan menjalankan fungsi sebanyak yang Anda tentukan dalam parameter, dan karena array diberi nomor, lebih masuk akal untuk menentukan berapa kali Anda ingin menjalankan suatu fungsi. Tidak seperti loop lainnya, loop for kemudian dapat menjalankan fungsi untuk setiap indeks dalam array, apakah nilainya didefinisikan atau tidak.
Intinya, Anda bisa menggunakan loop apa saja, tetapi Anda harus ingat persis cara kerjanya. Memahami kondisi di mana loop berbeda mengulangi, fungsi terpisah mereka, dan menyadari bahwa mereka akan lebih atau kurang sesuai untuk skenario yang berbeda.
Juga, mungkin dianggap sebagai praktik yang lebih baik untuk menggunakan forEach
metode ini daripada for...in
loop pada umumnya, karena lebih mudah untuk menulis dan memiliki lebih banyak fungsi, jadi Anda mungkin ingin membiasakan diri hanya menggunakan metode dan standar ini untuk, tetapi Anda panggilan.
Lihat di bawah ini bahwa dua loop pertama hanya menjalankan pernyataan console.log sekali, sedangkan standar untuk loop mengeksekusi fungsi sebanyak yang ditentukan, dalam hal ini, array.length = 6.
var arr = [];
arr[5] = 'F';
for (var index in arr) {
console.log(index);
console.log(arr[index]);
console.log(arr)
}
// 5
// 'F'
// => (6) [undefined x 5, 6]
arr.forEach(function(element, index, arr) {
console.log(index);
console.log(element);
console.log(arr);
});
// 5
// 'F'
// => Array (6) [undefined x 5, 6]
for (var index = 0; index < arr.length; index++) {
console.log(index);
console.log(arr[index]);
console.log(arr);
};
// 0
// undefined
// => Array (6) [undefined x 5, 6]
// 1
// undefined
// => Array (6) [undefined x 5, 6]
// 2
// undefined
// => Array (6) [undefined x 5, 6]
// 3
// undefined
// => Array (6) [undefined x 5, 6]
// 4
// undefined
// => Array (6) [undefined x 5, 6]
// 5
// 'F'
// => Array (6) [undefined x 5, 6]