Intro
Sejak saya masih kuliah, saya sudah memprogram di Java, JavaScript, Pascal, ABAP , PHP, Progress 4GL, C / C ++ dan mungkin beberapa bahasa lain yang tidak dapat saya pikirkan saat ini.
Sementara mereka semua memiliki keistimewaan linguistik mereka sendiri, masing-masing bahasa ini memiliki banyak konsep dasar yang sama. Konsep-konsep tersebut meliputi prosedur / fungsi, IF
pernyataan, FOR
-loop, dan WHILE
-loop.
for
-Lingkaran tradisional
for
Loop tradisional memiliki tiga komponen:
- Inisialisasi: dijalankan sebelum blok tampilan dieksekusi pertama kali
- Kondisi: memeriksa suatu kondisi setiap kali sebelum blok loop dieksekusi, dan berhenti loop jika salah
- Afterthought: dilakukan setiap kali setelah blok loop dieksekusi
Ketiga komponen ini dipisahkan satu sama lain oleh ;
simbol. Konten untuk masing-masing dari ketiga komponen ini adalah opsional, yang berarti bahwa yang berikut ini adalah for
loop seminimal mungkin:
for (;;) {
// Do stuff
}
Tentu saja, Anda perlu memasukkan if(condition === true) { break; }
atau di suatu if(condition === true) { return; }
tempat di dalam for
-loop untuk menghentikannya.
Meskipun demikian, biasanya inisialisasi digunakan untuk mendeklarasikan indeks, kondisi ini digunakan untuk membandingkan indeks itu dengan nilai minimum atau maksimum, dan setelahnya digunakan untuk meningkatkan indeks:
for (var i = 0, length = 10; i < length; i++) {
console.log(i);
}
Menggunakan for
loop tradisional untuk loop melalui array
Cara tradisional untuk mengulang melalui array, adalah ini:
for (var i = 0, length = myArray.length; i < length; i++) {
console.log(myArray[i]);
}
Atau, jika Anda lebih suka mengulang ke belakang, Anda melakukan ini:
for (var i = myArray.length - 1; i > -1; i--) {
console.log(myArray[i]);
}
Namun, ada banyak variasi yang mungkin, seperti misalnya yang ini:
for (var key = 0, value = myArray[key], length = myArray.length; key < length; value = myArray[++key]) {
console.log(value);
}
... atau yang ini ...
var i = 0, length = myArray.length;
for (; i < length;) {
console.log(myArray[i]);
i++;
}
... atau yang ini:
var key = 0, value;
for (; value = myArray[key++];){
console.log(value);
}
Apapun yang paling berhasil adalah masalah selera pribadi dan kasus penggunaan khusus yang Anda laksanakan.
Perhatikan bahwa masing-masing variasi ini didukung oleh semua browser, termasuk yang sangat lama!
Satu while
lingkaran
Satu alternatif untuk satu for
loop adalah satu while
loop. Untuk mengulang melalui array, Anda bisa melakukan ini:
var key = 0;
while(value = myArray[key++]){
console.log(value);
}
Seperti for
loop tradisional , while
loop didukung bahkan oleh browser tertua.
Juga, perhatikan bahwa setiap loop sementara dapat ditulis ulang sebagai for
loop. Sebagai contoh, while
loop di sini berperilaku dengan cara yang sama persis seperti ini for
-loop:
for(var key = 0; value = myArray[key++];){
console.log(value);
}
For...in
dan for...of
Dalam JavaScript, Anda juga dapat melakukan ini:
for (i in myArray) {
console.log(myArray[i]);
}
Ini harus digunakan dengan hati-hati, karena tidak berperilaku sama dengan for
loop tradisional dalam semua kasus, dan ada efek samping potensial yang perlu dipertimbangkan. Lihat Mengapa menggunakan "untuk ... dalam" dengan iterasi array adalah ide yang buruk? untuk lebih jelasnya.
Sebagai alternatif for...in
, sekarang ada juga untuk for...of
. Contoh berikut menunjukkan perbedaan antara for...of
loop dan for...in
loop:
var myArray = [3, 5, 7];
myArray.foo = "hello";
for (var i in myArray) {
console.log(i); // logs 0, 1, 2, "foo"
}
for (var i of myArray) {
console.log(i); // logs 3, 5, 7
}
Selain itu, Anda perlu mempertimbangkan bahwa tidak ada versi Internet Explorer yang mendukung for...of
( Edge 12+ tidak) dan yang for...in
membutuhkan setidaknya Internet Explorer 10.
Array.prototype.forEach()
Alternatif untuk for
-loops adalah Array.prototype.forEach()
, yang menggunakan sintaks berikut:
myArray.forEach(function(value, key, myArray) {
console.log(value);
});
Array.prototype.forEach()
didukung oleh semua browser modern, serta Internet Explorer 9 dan yang lebih baru.
Perpustakaan
Akhirnya, banyak perpustakaan utilitas juga memiliki foreach
variasi sendiri . AFAIK, tiga yang paling populer adalah ini:
jQuery.each()
, di jQuery :
$.each(myArray, function(key, value) {
console.log(value);
});
_.each()
, di Underscore.js :
_.each(myArray, function(value, key, myArray) {
console.log(value);
});
_.forEach()
, di Lodash.js :
_.forEach(myArray, function(value, key) {
console.log(value);
});