Loop mana yang lebih baik dalam javascript?

Pada artikel ini, kita akan melihat cara tercepat untuk mengulang array dalam JavaScript. JavaScript memiliki berbagai macam loop yang tersedia untuk melakukan iterasi. Loop berikut beserta sintaksnya didukung oleh JavaScript

untuk putaran. Perulangan for terdiri dari inisialisasi variabel, kondisi untuk evaluasi variabel, dan ekspresi untuk menentukan penghentian perulangan. Itu melakukan jumlah iterasi yang tetap, oleh karena itu harus digunakan dalam skenario di mana berapa kali pengulangan loop diketahui sebelumnya
Dalam kasus konstanta, kami memiliki jenis sintaks berikut

// for loop that performs 10k iterations
for (let i = 0; i < 10000; i++) {
    // Statements 
}

Dalam kasus array

// Loop that runs up till the length
// of the array 
for (i = 0; i < array.length; i++) {
    // Statements 
}
_

while loop. Perulangan while melakukan inisialisasi di luar, sebelum permulaan perulangan, kemudian suatu kondisi divalidasi dan kemudian ekspresi dievaluasi. Eksekusi while loop berlanjut hingga kondisi terpenuhi

While loop dalam kasus array, ikuti sintaksnya

// Initialization 
let x = 0;


// Condition checking
while (x <= arr.length+1) {
    // Increment
    x += 1;
}

forEach() lingkaran. Setiap elemen array dikenai fungsi yang melakukan beberapa operasi atau tugas. Fungsi ditentukan sebagai parameter metode forEach dalam JavaScript. Itu melakukan tugas yang sangat efisien di mana kode fungsional diperlukan. Ini pada dasarnya adalah fungsi panggilan balik yang sangat bergantung pada operasi yang dilakukan di dalam

// Evaluation is performed element
// wise of the array 
let arr = []                      
arr.forEach((ele) => { 
    // Statements
})                              

untuk… dari Loop. Ini adalah versi baru untuk loop. Perulangan ini membutuhkan penetapan nama sementara untuk setiap elemen array. Ini berjalan sangat cepat dalam hal kumpulan data kecil. Ini jauh lebih mudah dibaca dibandingkan dengan for loop tradisional. Itu melakukan iterasi atas objek iterasi bawaan JavaScript seperti String, Map, Set, dan Array

JavaScript menyediakan beberapa metode dan teknik untuk mengulang array dan elemen dan melakukan sesuatu dengannya. Jadi… pendekatan mana yang harus Anda gunakan, dan mengapa?

Hari ini, kita akan melihat berbagai cara untuk mengulang berbagai hal dengan vanilla JS, dan kapan dan mengapa harus memilih salah satu dari yang lain

Mari kita menggali lebih dalam

Contoh larik

Untuk artikel hari ini, mari gunakan larik sandwiches sebagai contoh

let sandwiches = ['turkey', 'tuna', 'ham', 'pb&j'];
_

Kami akan mengulanginya dan mencatat setiap item ke konsol, tetapi di situs atau aplikasi nyata, Anda mungkin ingin memanipulasi data dengan cara tertentu

Putaran for

Anda dapat menggunakan loop for untuk mengulang array, NodeLists, dan objek mirip array lainnya. Ini adalah cara jadul untuk mengulang hal-hal

// logs 0, "turkey", 1, "tuna", 2, "ham", 3, "pb&j"
for (let i = 0; i < sandwiches.length; i++) {
	console.log(i); // index
	console.log(sandwiches[i]); // value
}

  • Di bagian pertama loop, sebelum titik koma pertama, kami menetapkan variabel penghitung (biasanya i, tetapi bisa apa saja) ke
    // logs 0, "turkey", 1, "tuna", 2, "ham", 3, "pb&j"
    for (let i = 0; i < sandwiches.length; i++) {
    	console.log(i); // index
    	console.log(sandwiches[i]); // value
    }
    
    0
  • Bagian kedua, di antara dua titik koma, adalah pengujian yang kami periksa setelah setiap iterasi loop. Dalam hal ini, kami ingin memastikan nilai counter kurang dari jumlah item dalam array kami. Kami melakukan ini dengan memeriksa
    // logs 0, "turkey", 1, "tuna", 2, "ham", 3, "pb&j"
    for (let i = 0; i < sandwiches.length; i++) {
    	console.log(i); // index
    	console.log(sandwiches[i]); // value
    }
    
    _1 dari array kami
  • Terakhir, setelah titik koma kedua, kami menentukan apa yang akan dijalankan setelah setiap loop. Dalam hal ini, kami menambahkan
    // logs 0, "turkey", 1, "tuna", 2, "ham", 3, "pb&j"
    for (let i = 0; i < sandwiches.length; i++) {
    	console.log(i); // index
    	console.log(sandwiches[i]); // value
    }
    
    _2 ke nilai i dengan
    // logs 0, "turkey", 1, "tuna", 2, "ham", 3, "pb&j"
    for (let i = 0; i < sandwiches.length; i++) {
    	console.log(i); // index
    	console.log(sandwiches[i]); // value
    }
    
    4

Kami kemudian dapat menggunakan i_ untuk mengambil item saat ini di loop dari array kami

Ini demonya

Putaran // logs 0, "turkey", 1, "tuna", 2, "ham", 3, "pb&j" for (let i = 0; i < sandwiches.length; i++) { console.log(i); // index console.log(sandwiches[i]); // value } _6

Pendekatan yang lebih modern, Anda dapat menggunakan

// logs 0, "turkey", 1, "tuna", 2, "ham", 3, "pb&j"
for (let i = 0; i < sandwiches.length; i++) {
	console.log(i); // index
	console.log(sandwiches[i]); // value
}
_6 untuk mengulang melalui objek yang dapat diubah. Itu termasuk string, array, dan objek mirip array lainnya seperti NodeLists, HTMLCollections, dan HTMLFormControlsCollection, tetapi bukan objek biasa (
// logs 0, "turkey", 1, "tuna", 2, "ham", 3, "pb&j"
for (let i = 0; i < sandwiches.length; i++) {
	console.log(i); // index
	console.log(sandwiches[i]); // value
}
8)

Dalam

// logs 0, "turkey", 1, "tuna", 2, "ham", 3, "pb&j"
for (let i = 0; i < sandwiches.length; i++) {
	console.log(i); // index
	console.log(sandwiches[i]); // value
}
_6 loop, Anda menentukan variabel untuk mewakili item saat ini
// logs "turkey", "tuna", "ham", "pb&j"
for (let sandwich of sandwiches) {
	console.log(sandwich);
}
0 iterable yang Anda ulangi. Di dalam blok (hal-hal di antara kurung kurawal), Anda dapat menggunakan variabel itu untuk mereferensikan item saat ini

// logs "turkey", "tuna", "ham", "pb&j"
for (let sandwich of sandwiches) {
	console.log(sandwich);
}

Ini demo lainnya

Melewati dan mengakhiri loop

Anda dapat melompat ke item berikutnya dalam for atau

// logs 0, "turkey", 1, "tuna", 2, "ham", 3, "pb&j"
for (let i = 0; i < sandwiches.length; i++) {
	console.log(i); // index
	console.log(sandwiches[i]); // value
}
6 loop menggunakan
// logs "turkey", "tuna", "ham", "pb&j"
for (let sandwich of sandwiches) {
	console.log(sandwich);
}
3, atau akhiri loop sama sekali dengan
// logs "turkey", "tuna", "ham", "pb&j"
for (let sandwich of sandwiches) {
	console.log(sandwich);
}
4

// logs "turkey", "tuna", "pb&j"
for (let sandwich of sandwiches) {

	// Skip to the next item in the loop
	if (sandwich === 'ham') continue;

	console.log(sandwich);

}

// Logs "turkey", "tuna"
for (let sandwich of sandwiches) {

	// Skip to the next item in the loop
	if (sandwich === 'ham') break;

	console.log(sandwich);

}

Ini demo

// logs "turkey", "tuna", "ham", "pb&j"
for (let sandwich of sandwiches) {
	console.log(sandwich);
}
_3 dan
// logs "turkey", "tuna", "ham", "pb&j"
for (let sandwich of sandwiches) {
	console.log(sandwich);
}
4

Metode // logs "turkey", "tuna", "ham", "pb&j" for (let sandwich of sandwiches) { console.log(sandwich); } 7 dan // logs "turkey", "tuna", "ham", "pb&j" for (let sandwich of sandwiches) { console.log(sandwich); } 8

Metode

// logs "turkey", "tuna", "ham", "pb&j"
for (let sandwich of sandwiches) {
	console.log(sandwich);
}
_7 dan
// logs "turkey", "tuna", "ham", "pb&j"
for (let sandwich of sandwiches) {
	console.log(sandwich);
}
8 menyediakan cara yang lebih sederhana untuk melakukan iterasi pada array dan NodeList sambil tetap memiliki akses ke indeks

Anda meneruskan fungsi panggilan balik ke metode

// logs "turkey", "tuna", "pb&j"
for (let sandwich of sandwiches) {

	// Skip to the next item in the loop
	if (sandwich === 'ham') continue;

	console.log(sandwich);

}

// Logs "turkey", "tuna"
for (let sandwich of sandwiches) {

	// Skip to the next item in the loop
	if (sandwich === 'ham') break;

	console.log(sandwich);

}
1. Callback itu sendiri menerima tiga argumen. item saat ini dalam loop, indeks item saat ini dalam loop, dan array itu sendiri. Ketiganya opsional, dan Anda dapat memberi nama apa pun yang Anda inginkan

// logs 0, "turkey", 1, "tuna", 2, "ham", 3, "pb&j"
sandwiches.forEach(function (sandwich, index) {
	console.log(index);    // index
	console.log(sandwich); // value
});

Ini demo metode

// logs "turkey", "tuna", "ham", "pb&j"
for (let sandwich of sandwiches) {
	console.log(sandwich);
}
7

Berbeda dengan for dan

// logs 0, "turkey", 1, "tuna", 2, "ham", 3, "pb&j"
for (let i = 0; i < sandwiches.length; i++) {
	console.log(i); // index
	console.log(sandwiches[i]); // value
}
6 loop, Anda tidak dapat mengakhiri fungsi callback
// logs "turkey", "tuna", "pb&j"
for (let sandwich of sandwiches) {

	// Skip to the next item in the loop
	if (sandwich === 'ham') continue;

	console.log(sandwich);

}

// Logs "turkey", "tuna"
for (let sandwich of sandwiches) {

	// Skip to the next item in the loop
	if (sandwich === 'ham') break;

	console.log(sandwich);

}
1 sebelum di-loop melalui semua item. Anda dapat
// logs "turkey", "tuna", "pb&j"
for (let sandwich of sandwiches) {

	// Skip to the next item in the loop
	if (sandwich === 'ham') continue;

	console.log(sandwich);

}

// Logs "turkey", "tuna"
for (let sandwich of sandwiches) {

	// Skip to the next item in the loop
	if (sandwich === 'ham') break;

	console.log(sandwich);

}
6 untuk mengakhiri loop saat ini (seperti yang Anda lakukan dengan
// logs "turkey", "tuna", "ham", "pb&j"
for (let sandwich of sandwiches) {
	console.log(sandwich);
}
3), tetapi tidak ada cara untuk
// logs "turkey", "tuna", "ham", "pb&j"
for (let sandwich of sandwiches) {
	console.log(sandwich);
}
4 loop

// Skip "ham"
// logs "turkey", "tuna", "pb&j"
sandwiches.forEach(function (sandwich, index) {
	if (sandwich === 'ham') return;
	console.log(sandwich);
});

Berikut demo melewatkan item dalam

// logs "turkey", "tuna", "ham", "pb&j"
for (let sandwich of sandwiches) {
	console.log(sandwich);
}
7 loop

Metode mana yang harus Anda gunakan, dan mengapa?

Dalam kebanyakan kasus, sebagian besar waktu, saya menggunakan

// logs 0, "turkey", 1, "tuna", 2, "ham", 3, "pb&j"
for (let i = 0; i < sandwiches.length; i++) {
	console.log(i); // index
	console.log(sandwiches[i]); // value
}
6 loop. Ini sederhana dan lugas, dan mudah untuk diketik

Ada beberapa pengecualian situasional untuk itu, namun…

  1. Jika saya memerlukan indeks item, saya akan menggunakan metode
    // logs "turkey", "tuna", "ham", "pb&j"
    for (let sandwich of sandwiches) {
    	console.log(sandwich);
    }
    
    7 atau
    // logs "turkey", "tuna", "ham", "pb&j"
    for (let sandwich of sandwiches) {
    	console.log(sandwich);
    }
    
    8
  2. Jika saya memerlukan indeks dan ingin mengakhiri perulangan lebih awal setelah suatu kondisi terpenuhi, saya akan menggunakan perulangan for

Saya mencoba untuk menghindari for loop kecuali ada alasan kuat untuk menggunakannya. Mereka sulit dibaca. Mereka sulit untuk menulis. Mereka hanya berantakan

Loop mana yang tercepat di JavaScript 2022?

for loop tercepat, tetapi sulit dibaca. Foreach cepat, dan iterasi dapat dikontrol.

Jenis loop mana yang lebih cepat?

for loop adalah yang tercepat tetapi sulit dibaca. Foreach cepat, dan iterasi dapat dikontrol. For…of membutuhkan waktu, tapi lebih manis. For…in membutuhkan waktu, karenanya kurang nyaman.

Jenis loop mana yang terbaik?

for loop mungkin adalah jenis loop yang paling umum dan terkenal dalam bahasa pemrograman apa pun. For dapat digunakan untuk melakukan iterasi melalui elemen-elemen array. For juga dapat digunakan untuk melakukan sejumlah iterasi tetap. Secara default kenaikannya adalah satu.

Mana yang lebih cepat forEach atau for loop JavaScript?

forEach Loop . Ini lebih lambat dari loop tradisional dalam kinerja. Pernyataan break dapat digunakan untuk keluar dari perulangan. Pernyataan break tidak dapat digunakan karena fungsi callback.