it-swarm-id.com

Untuk setiap array dalam JavaScript?

Bagaimana saya bisa mengulang semua entri dalam array menggunakan JavaScript?

Saya pikir itu kira-kira seperti ini:

forEach(instance in theArray)

Di mana theArray adalah array saya, tetapi ini tampaknya tidak benar.

4056
Dante1986

Edit: Jawaban ini sudah usang. Untuk pendekatan yang lebih modern, lihat metode yang tersedia pada array . Metode yang menarik mungkin:

  • untuk setiap
  • peta
  • filter
  • Zip
  • mengurangi
  • setiap
  • beberapa

Cara standar untuk mengulangi array di JavaScript adalah vanilla for- loop:

var length = arr.length,
    element = null;
for (var i = 0; i < length; i++) {
  element = arr[i];
  // Do something with element
}

Perhatikan, bagaimanapun, bahwa pendekatan ini hanya baik jika Anda memiliki array yang padat, dan setiap indeks ditempati oleh suatu elemen. Jika array jarang, maka Anda dapat mengalami masalah kinerja dengan pendekatan ini, karena Anda akan mengulangi banyak indeks yang tidak sungguh-sungguh ada dalam array. Dalam hal ini, loop for .. in- mungkin ide yang lebih baik. Namun, Anda harus menggunakan perlindungan yang sesuai untuk memastikan bahwa hanya properti array yang diinginkan (yaitu elemen array) yang ditindaklanjuti, karena loop for..in- juga akan disebutkan dalam browser lama, atau jika properti tambahan didefinisikan sebagai enumerable.

Di ECMAScript 5 akan ada metode forEach pada prototipe array, tetapi tidak didukung di browser lawas. Jadi untuk dapat menggunakannya secara konsisten, Anda harus memiliki lingkungan yang mendukungnya (misalnya, Node.js untuk JavaScript sisi server), atau gunakan "Polyfill". Namun, Polyfill untuk fungsi ini sepele dan karena membuat kode lebih mudah dibaca, itu adalah polyfill yang baik untuk dimasukkan.

473
PatrikAkerstrand

Jika Anda menggunakan perpustakaan jQuery , Anda dapat menggunakan jQuery.each :

$.each(yourArray, function(index, value) {
  // do your stuff here
});

EDIT: 

Sesuai pertanyaan, pengguna menginginkan kode dalam javascript alih-alih jquery sehingga hasil editnya

var length = yourArray.length;   
for (var i = 0; i < length; i++) {
  // Do something with yourArray[i].
}
214
Poonam

Beberapa C - gaya bahasa menggunakan foreach untuk mengulang melalui enumerasi. Dalam JavaScript ini dilakukan dengan struktur loop for..in :

var index,
    value;
for (index in obj) {
    value = obj[index];
}

Ada tangkapan. for..in akan mengulang setiap anggota yang dapat dihitung objek, dan anggota pada prototipe-nya. Untuk menghindari membaca nilai yang diwariskan melalui prototipe objek, cukup periksa apakah properti itu milik objek:

for (i in obj) {
    if (obj.hasOwnProperty(i)) {
        //do stuff
    }
}

Selain itu, ECMAScript 5 telah menambahkan metode forEach ke Array.prototype yang dapat digunakan untuk menghitung di atas array menggunakan calback (polyfill ada dalam dokumen sehingga Anda masih dapat menggunakannya untuk browser yang lebih lama):

arr.forEach(function (val, index, theArray) {
    //do stuff
});

Penting untuk dicatat bahwa Array.prototype.forEach tidak putus ketika callback kembali false. jQuery dan Underscore.js menyediakan variasinya sendiri di each untuk menyediakan loop yang dapat dihubung pendek.

75
zzzzBov

Jika Anda ingin mengulang array, gunakan loop tiga bagian standar for.

for (var i = 0; i < myArray.length; i++) {
    var arrayItem = myArray[i];
}

Anda bisa mendapatkan beberapa optimasi kinerja dengan menyalin myArray.length atau mengulanginya lagi.

34
Quentin

Saya tahu ini adalah posting lama, dan sudah ada begitu banyak jawaban. Untuk sedikit lebih lengkap saya pikir saya akan melempar yang lain menggunakan AngularJS . Tentu saja, ini hanya berlaku jika Anda menggunakan Angular, jelas, toh saya tetap ingin mengatakannya.

angular.forEach mengambil 2 argumen dan argumen ketiga opsional. Argumen pertama adalah objek (array) untuk beralih, argumen kedua adalah fungsi iterator, dan argumen ketiga opsional adalah konteks objek (pada dasarnya disebut di dalam loop sebagai 'ini'.

Ada berbagai cara untuk menggunakan forEach loop of angular. Yang paling sederhana dan mungkin paling banyak digunakan adalah

var temp = [1, 2, 3];
angular.forEach(temp, function(item) {
    //item will be each element in the array
    //do something
});

Cara lain yang berguna untuk menyalin item dari satu array ke array lainnya adalah

var temp = [1, 2, 3];
var temp2 = [];
angular.forEach(temp, function(item) {
    this.Push(item); //"this" refers to the array passed into the optional third parameter so, in this case, temp2.
}, temp2);

Meskipun, Anda tidak harus melakukan itu, Anda cukup melakukan hal berikut dan itu setara dengan contoh sebelumnya:

angular.forEach(temp, function(item) {
    temp2.Push(item);
});

Sekarang ada pro dan kontra menggunakan fungsi angular.forEach yang bertentangan dengan loop bawaan for yang dibuat dengan vanilla.

Pros

  • Mudah dibaca
  • Mudah ditulisi
  • Jika tersedia, angular.forEach akan menggunakan loop ES5 forEach. Sekarang, saya akan sampai pada efisiensi di bagian kontra, karena forEach loop adalah banyak lebih lambat daripada for loop. Saya menyebutkan ini sebagai pro karena itu bagus untuk konsisten dan standar.

Pertimbangkan 2 loop bersarang berikut, yang melakukan hal yang persis sama. Katakanlah kita memiliki 2 array objek dan setiap objek berisi array hasil, yang masing-masing memiliki properti Nilai yang berupa string (atau apa pun). Dan katakanlah kita perlu mengulangi setiap hasil dan jika hasilnya sama maka lakukan beberapa tindakan: 

angular.forEach(obj1.results, function(result1) {
    angular.forEach(obj2.results, function(result2) {
        if (result1.Value === result2.Value) {
            //do something
        }
    });
});

//exact same with a for loop
for (var i = 0; i < obj1.results.length; i++) {
    for (var j = 0; j < obj2.results.length; j++) {
        if (obj1.results[i].Value === obj2.results[j].Value) {
            //do something
        }
    }
}

Memang ini adalah contoh hipotetis yang sangat sederhana, tetapi saya telah menulis triple tertanam untuk loop menggunakan pendekatan kedua dan itu sangat sulit dibaca, dan menulis dalam hal ini.

Kontra

  • Efisiensi. angular.forEach, dan forEach asli, dalam hal ini, keduanya begitu banyak lebih lambat dari loop for normal .... sekitar 90% lebih lambat . Jadi untuk set data besar, lebih baik tetap pada loop asli for.
  • Tanpa istirahat, melanjutkan, atau mengembalikan dukungan. continue sebenarnya didukung oleh " accident ", untuk melanjutkan dalam angular.forEach Anda cukup menaruh pernyataan return; dalam fungsi seperti angular.forEach(array, function(item) { if (someConditionIsTrue) return; }); yang akan menyebabkannya melanjutkan fungsi untuk iterasi itu. Hal ini juga disebabkan oleh fakta bahwa forEach asli tidak mendukung break atau melanjutkan.

Saya yakin ada berbagai pro dan kontra lainnya, dan jangan ragu untuk menambahkan yang Anda inginkan. Saya merasa bahwa, intinya, jika Anda membutuhkan efisiensi, tetap dengan hanya loop for asli untuk kebutuhan looping Anda. Tetapi, jika set data Anda lebih kecil dan sedikit efisiensi menyerah untuk ditukar dengan keterbacaan dan kemampuan menulis, maka dengan segala cara melemparkan angular.forEach pada bocah nakal itu.

28
user2359695

Jika Anda tidak keberatan mengosongkan array:

var x;

while(x = y.pop()){ 

    alert(x); //do something 

}

x akan berisi nilai terakhir y dan akan dihapus dari array. Anda juga dapat menggunakan shift() yang akan memberi dan menghapus item pertama dari y.

27
gaby de wilde

Implementasi forEach ( lihat di jsFiddle ):

function forEach(list,callback) {
  var length = list.length;
  for (var n = 0; n < length; n++) {
    callback.call(list[n]);
  }
}

var myArray = ['hello','world'];

forEach(
  myArray,
  function(){
    alert(this); // do something
  }
);
27
nmoliveira

Solusi mudah sekarang adalah dengan menggunakan pustaka underscore.js . Ini menyediakan banyak alat yang berguna, seperti each dan secara otomatis akan mendelegasikan pekerjaan ke forEach asli jika tersedia.

Contoh CodePen cara kerjanya adalah:

var arr = ["elemA", "elemB", "elemC"];
_.each(arr, function(elem, index, ar)
{
...
});

Lihat juga

24
Micka

Ada tiga implementasi foreach di jQuery sebagai berikut.

var a = [3,2];

$(a).each(function(){console.log(this.valueOf())}); //Method 1
$.each(a, function(){console.log(this.valueOf())}); //Method 2
$.each($(a), function(){console.log(this.valueOf())}); //Method 3
24
Rajesh Paul

Mungkin loop for(i = 0; i < array.length; i++) bukanlah pilihan terbaik. Mengapa? Jika Anda memiliki ini:

var array = new Array();
array[1] = "Hello";
array[7] = "World";
array[11] = "!";

Metode ini akan memanggil dari array[0] ke array[2]. Pertama, ini akan pertama-tama variabel referensi Anda bahkan tidak memiliki, kedua Anda tidak akan memiliki variabel dalam array, dan ketiga ini akan membuat kode lebih tebal. Lihat di sini, ini yang saya gunakan:

for(var i in array){
    var el = array[i];
    //If you want 'i' to be INT just put parseInt(i)
    //Do something with el
}

Dan jika Anda ingin itu berfungsi, Anda bisa melakukan ini:

function foreach(array, call){
    for(var i in array){
        call(array[i]);
    }
}

Jika Anda ingin istirahat, sedikit lebih banyak logika:

function foreach(array, call){
    for(var i in array){
        if(call(array[i]) == false){
            break;
        }
    }
}

Contoh:

foreach(array, function(el){
    if(el != "!"){
        console.log(el);
    } else {
        console.log(el+"!!");
    }
});

Ia mengembalikan:

//Hello
//World
//!!!
22

Pada ES6:

list = [0, 1, 2, 3]
for (let obj of list) {
    console.log(obj)
}

Di mana of menghindari keanehan yang terkait dengan in dan membuatnya berfungsi seperti loop for dari bahasa lain, dan let mengikat i di dalam loop sebagai lawan dari fungsi.

Kawat gigi ({}) dapat dihilangkan ketika hanya ada satu perintah (mis. Pada contoh di atas).

21
Zaz

Ini adalah iterator untuk daftar NON-jarang di mana indeks dimulai pada 0, yang merupakan skenario khas ketika berhadapan dengan document.getElementsByTagName atau document.querySelectorAll)

function each( fn, data ) {

    if(typeof fn == 'string')
        eval('fn = function(data, i){' + fn + '}');

    for(var i=0, L=this.length; i < L; i++) 
        fn.call( this[i], data, i );   

    return this;
}

Array.prototype.each = each;  

Contoh penggunaan:

Contoh 1

var arr = [];
[1, 2, 3].each( function(a){ a.Push( this * this}, arr);
arr = [1, 4, 9]

Contoh # 2

each.call(document.getElementsByTagName('p'), "this.className = data;",'blue');

Setiap tag p mendapat class="blue"

Contoh # 3

each.call(document.getElementsByTagName('p'), 
    "if( i % 2 == 0) this.className = data;",
    'red'
);

Setiap tag p lainnya mendapat class="red">

Contoh # 4

each.call(document.querySelectorAll('p.blue'), 
    function(newClass, i) {
        if( i < 20 )
            this.className = newClass;
    }, 'green'
);

Dan akhirnya 20 tag p biru pertama diubah menjadi hijau

Perhatian saat menggunakan string sebagai fungsi: fungsi dibuat di luar konteks dan harus digunakan hanya jika Anda yakin akan pelingkupan variabel. Kalau tidak, lebih baik melewati fungsi di mana pelingkupan lebih intuitif.

17
Tim

Tidak ada loop for each di native JavaScript . Anda dapat menggunakan pustaka untuk mendapatkan fungsionalitas ini (saya sarankan Underscore.js ), gunakan for sederhana dalam loop.

for (var instance in objects) {
   ...
}

Namun, perhatikan bahwa mungkin ada alasan untuk menggunakan loop for yang lebih sederhana (lihat pertanyaan Stack Overflow Mengapa menggunakan "untuk ... dalam" dengan iterasi array adalah ide yang buruk?)

var instance;
for (var i=0; i < objects.length; i++) {
    var instance = objects[i];
    ...
}
17
joidegn

Ada beberapa cara untuk mengulang-ulang array dalam JavaScript, seperti di bawah ini:

for - itu yang paling umum. Blok penuh kode untuk pengulangan

var languages = ["Java", "JavaScript", "C#", "Python"];
var i, len, text;
for (i = 0, len = languages.length, text = ""; i < len; i++) {
    text += languages[i] + "<br>";
}
document.getElementById("example").innerHTML = text;
<p id="example"></p>

while - loop saat suatu kondisi sedang lewat. Tampaknya menjadi loop tercepat

var text = "";
var i = 0;
while (i < 10) {
    text +=  i + ") something<br>";
    i++;
}
document.getElementById("example").innerHTML = text;
<p id="example"></p>

do/while - juga loop melalui blok kode sementara kondisinya benar, akan berjalan setidaknya satu kali

var text = ""
var i = 0;
do {
    text += i + ") something <br>";
    i++;
}
while (i < 10);
document.getElementById("example").innerHTML = text;
<p id="example"></p>

Fungsional loop - forEach, map, filter, juga reduce (mereka mengulang fungsi, tetapi digunakan jika Anda perlu melakukan sesuatu dengan array Anda, dll.

// For example, in this case we loop through the number and double them up using the map function
var numbers = [65, 44, 12, 4];
document.getElementById("example").innerHTML = numbers.map(function(num){return num * 2});
<p id="example"></p>

Untuk informasi dan contoh lebih lanjut tentang pemrograman fungsional pada array, lihat posting blog Pemrograman fungsional dalam JavaScript: peta, filter dan perkecil.

16
Alireza

ECMAScript5 (versi tentang Javascript) berfungsi dengan Array.

forEach - Iterasi setiap item dalam array dan lakukan apa pun yang Anda butuhkan dengan setiap item.

['C', 'D', 'E'].forEach(function(element, index) {
  console.log(element + " is the #" + (index+1) + " in musical scale");
});

// Output
// C is the #1 in musical scale
// D is the #2 in musical scale
// E is the #3 in musical scale

Dalam hal ini, lebih tertarik pada operasi pada array menggunakan beberapa fitur bawaan.

map - Ini menciptakan array baru dengan hasil dari fungsi panggilan balik. Metode ini baik untuk digunakan ketika Anda perlu memformat elemen array Anda.

// Let's upper case the items in the array
['bob', 'joe', 'jen'].map(function(elem) {
  return elem.toUpperCase();
});

// Output: ['BOB', 'JOE', 'JEN']

Perkecil - Seperti namanya kata itu mengurangi array ke nilai tunggal dengan memanggil fungsi yang diberikan lewat elemen currenct dan hasil eksekusi sebelumnya.

[1,2,3,4].reduce(function(previous, current) {
  return previous + current;
});
// Output: 10
// 1st iteration: previous=1, current=2 => result=3
// 2nd iteration: previous=3, current=3 => result=6
// 3rd iteration: previous=6, current=4 => result=10

every - Mengembalikan nilai true atau false jika semua elemen dalam array lulus tes dalam fungsi callback.

// Check if everybody has 18 years old of more.
var ages = [30, 43, 18, 5];  
ages.every(function(elem) {  
  return elem >= 18;
});

// Output: false

filter - Sangat mirip dengan setiap kecuali filter yang mengembalikan array dengan elemen yang mengembalikan true ke fungsi yang diberikan.

// Finding the even numbers
[1,2,3,4,5,6].filter(function(elem){
  return (elem % 2 == 0)
});

// Output: [2,4,6]

Semoga ini bermanfaat.

14
Anil Kumar Arya

Tidak ada kemampuan bawaan untuk menerobos forEach. Untuk menghentikan eksekusi gunakan Array#some seperti di bawah ini:

[1,2,3].some(function(number) {
    return number === 1;
});

Ini berfungsi karena some mengembalikan true segera setelah salah satu dari callback, dieksekusi dalam urutan array, mengembalikan true, hubungan pendek eksekusi sisanya Jawaban Asli Lihat prototipe array untuk some

14

Saya juga ingin menambahkan ini sebagai komposisi dari loop terbalik dan jawaban di atas untuk seseorang yang ingin sintaks ini juga.

var foo = [object,object,object];
for (var i = foo.length, item; item = foo[--i];) {
    console.log(item);
}

Pro:

Manfaat untuk ini: Anda sudah memiliki referensi di pertama seperti itu tidak perlu dinyatakan kemudian dengan baris lain. Ini berguna saat perulangan melalui array objek.

Kontra:

Ini akan rusak setiap kali referensi salah - falsey (tidak ditentukan, dll.). Ini bisa digunakan sebagai keuntungan. Namun, itu akan membuatnya sedikit lebih sulit untuk dibaca. Dan juga tergantung pada browser, itu bisa "tidak" dioptimalkan untuk bekerja lebih cepat daripada yang asli.

cara jQuery menggunakan $.map:

var data = [1, 2, 3, 4, 5, 6, 7];

var newData = $.map(data, function(element) {
    if (element % 2 == 0) {
        return element;
    }
});

// newData = [2, 4, 6];
10
DanFromGermany

Cara terdekat dengan ide Anda adalah dengan menggunakan Array.forEach() yang menerima fungsi clojure yang akan dieksekusi untuk setiap elemen array.

myArray.forEach(
  (item) => {
    // do something 
    console.log(item);
  }
);

Cara lain yang layak adalah dengan menggunakan Array.map() yang bekerja dengan cara yang sama tetapi juga mutates setiap elemen dan mengembalikannya seperti:

var myArray = [1, 2, 3];
myArray = myArray.map(
  (item) => {
    return item + 1;
  }
);

console.log(myArray); // [2, 3, 4]

Sintaks lambda biasanya tidak bekerja di IE 10 atau di bawah.

Saya biasanya menggunakan

[].forEach.call(arrayName,function(value,index){
    console.log("value of the looped element" + value);
    console.log("index of the looped element" + index);
});


If you are a jQuery Fan and already have a jQuery file running, you should reverse the positions of the index and value parameters

$("#ul>li").each(function(**index,value**){
    console.log("value of the looped element" + value);
    console.log("index of the looped element" + index);
});
5
Murtuza Husain

Anda dapat menghubungi forEach Like this:

let Array = [1,3,2];

theArray.forEach((element)=>{ 
  // use the element of the array
  console.log(element) 
}

elemen akan memiliki nilai setiap indeks dari 0 hingga panjang array.

Keluaran:

1    
3    
2

Penjelasan:

forEach ada di kelas prototipe. Anda juga dapat menyebutnya sebagai theArray.prototype.forEach (...);

prototipe: https://hackernoon.com/prototypes-in-javascript-5bba2990e04b

Anda juga dapat mengubah lebih dari satu array seperti ini:

for(let i=0;i<theArray.length;i++){
  console.log(i); //i will have the value of each index
}
4
Nouman Dilshad

jika Anda ingin loop melalui array objek dengan fungsi panah:

let arr=[{name:'john',age:50},{name:'clark',age:19},{name:'mohan',age:26}];

arr.forEach((person)=>{
  console.log('i am '+person.name+' and i am '+person.age+ ' old');
})
3
subhashish negi

Ringkasan:

Ketika mengulangi array, kita sering ingin mencapai salah satu dari tujuan berikut:

  1. Kami ingin beralih ke array dan membuat array baru:

    Array.prototype.map 

  2. Kami ingin mengulangi array dan tidak membuat array baru:

    Array.prototype.forEach 

    for..of loop

Di JS ada banyak cara untuk mencapai kedua tujuan ini. Namun, beberapa lebih ramah daripada yang lain. Di bawah ini Anda dapat menemukan beberapa metode yang umum digunakan (imo yang paling mudah digunakan) untuk mencapai iterasi array dalam javascript.

Membuat array baru: Map

map() adalah fungsi yang terletak di Array.prototype yang dapat mengubah setiap elemen dari array dan kemudian mengembalikan array baru . map() mengambil argumen fungsi panggil balik dan bekerja dengan cara berikut:

let arr = [1, 2, 3, 4, 5];

let newArr = arr.map((element, index, array) => {
  return element * 2;
})

console.log(arr);
console.log(newArr);

Callback yang kami berikan ke map() sebagai argumen dieksekusi untuk setiap elemen. Kemudian sebuah array dikembalikan yang memiliki panjang yang sama dengan array asli. Dalam elemen array baru ini ditransformasikan oleh fungsi callback yang diteruskan sebagai argumen ke map().

Perbedaan yang jelas antara map dan mekanisme loop lainnya seperti forEach dan for..of loop adalah bahwamap kembali sebagai array baru dan membiarkan array lama tetap utuh (kecuali jika Anda secara eksplisit memanipulasi dengan berpikir seperti splice). 

Perhatikan juga bahwa callback fungsi map menyediakan argumen kedua nomor indeks dari iterasi saat ini. Selanjutnya, apakah argumen ketiga menyediakan larik yang dipanggil map. Terkadang sifat ini bisa sangat berguna.

Loop menggunakan forEach

forEach adalah fungsi yang terletak di Array.prototype yang menggunakan fungsi callback sebagai argumen. Itu kemudian menjalankan fungsi callback ini untuk setiap elemen dalam array. Berbeda dengan fungsi map(), fungsi forEach tidak mengembalikan apa-apa (undefined). Sebagai contoh:

let arr = [1, 2, 3, 4, 5];

arr.forEach((element, index, array) => {

  console.log(element * 2);

  if (index === 4) {
    console.log(array)
  }
  // index, and oldArray are provided as 2nd and 3th argument by the callback

})

console.log(arr);

Sama seperti fungsi map, panggilan balik forEach memberikan argumen kedua nomor indeks dari iterasi saat ini. Argumen ketiga juga menyediakan array tempat forEach dipanggil. 

Loop melalui elemen menggunakan for..of

Loop for..of loop melalui setiap elemen array (atau objek iterable lainnya). Ini bekerja dengan cara berikut:

let arr = [1, 2, 3, 4, 5];

for(let element of arr) {
  console.log(element * 2);
}

Dalam contoh di atas element adalah singkatan dari elemen array dan arr adalah array yang ingin kita loop. Bukan berarti nama element sewenang-wenang dan kami bisa memilih nama lain seperti 'el' atau sesuatu yang lebih deklaratif saat ini berlaku. 

Jangan bingung loop for..in dengan loop for..of. for..in akan mengulang semua properti enumerable dari array sedangkan loop for..of hanya akan mengulang melalui elemen array. Sebagai contoh:

let arr = [1, 2, 3, 4, 5];

arr.foo = 'foo';

for(let element of arr) {
  console.log(element);
}

for(let element in arr) {
  console.log(element);
}

2

Jika Anda memiliki array besar, Anda harus menggunakan iterators untuk mendapatkan efisiensi. Iterator adalah properti dari koleksi JavaScript tertentu (seperti Map , Set , String , Array ). Bahkan, for..of menggunakan iterator di bawah tenda.

Iterator meningkatkan efisiensi dengan membiarkan Anda mengonsumsi item dalam daftar satu per satu seolah-olah itu adalah stream. Apa yang membuat iterator spesial adalah bagaimana ia melintasi koleksi. Loop lain perlu memuat seluruh koleksi di depan untuk beralih di atasnya, sedangkan iterator hanya perlu mengetahui posisi saat ini dalam koleksi. 

Anda mengakses item saat ini dengan memanggil metode iterator next. Metode selanjutnya akan mengembalikan value dari item saat ini dan boolean untuk menunjukkan kapan Anda telah mencapai akhir koleksi. Berikut ini adalah contoh membuat iterator dari array. 

Ubah array reguler Anda ke iterator menggunakan values() metode seperti ini: 

    const myArr = [2,3,4]

let it = myArr.values();

console.log(it.next());
console.log(it.next());
console.log(it.next());
console.log(it.next());

Anda juga dapat mengubah array reguler Anda ke iterator menggunakan Symbol.iterator seperti ini: 

const myArr = [2,3,4]

let it = myArr[Symbol.iterator]();

console.log(it.next());
console.log(it.next());
console.log(it.next());
console.log(it.next());

Anda juga dapat mengubah array reguler Anda menjadi iterator seperti ini: 

let myArr = [8, 10, 12];

function makeIterator(array) {
    var nextIndex = 0;
    
    return {
       next: function() {
           return nextIndex < array.length ?
               {value: array[nextIndex++], done: false} :
               {done: true};
       }
    };
};

var it = makeIterator(myArr);

console.log(it.next().value);   // {value: 8, done: false}
console.log(it.next().value);   // {value: 10, done: false}
console.log(it.next().value);   // {value: 12, done: false}
console.log(it.next().value);   // {value: undefined, done: true}

CATATAN

  • Iterator bersifat habis-habisan. 
  • Objek tidak iterable secara default. Gunakan for..in dalam kasus itu karena alih-alih nilai-nilai itu bekerja dengan kunci.

Anda dapat membaca lebih lanjut tentang iteration protocoldi sini

1
BlackBeard
var a = ["car", "bus", "truck"]
a.forEach(function(item, index) {
    console.log("Index" + index);
    console.log("Element" + item);
})
1
John

// Looping through arrays using foreach  ES6 way

var data = new Array(1,2,3,4,5);
data.forEach((val,index) => {
    console.log("index :",index); // index
	console.log("value :", val); // value
});

0
arul prince

Anda dapat menggunakan forEach () API (disediakan oleh Javascript) yang menerima fungsi sebagai panggilan balik dan menjalankan satu waktu untuk setiap elemen yang ada di dalam array.

https://fullstackgeek.blogspot.com/2019/01/arrays-in-javascript-part-2.html

0
Ayush Jain

Saya berasal dari python dan saya menemukan cara ini jauh lebih jelas.
array menjadi array, contohnya menjadi elemen array

for(let instance of theArray)
{
    console.log("The instance",instance);
}

atau

for( instance in theArray)
{
  console.log("The instance",instance);
}

dibandingkan dengan:

theArray.forEach(function(instance) {
    console.log(instance);
});

tetapi pada akhirnya keduanya melakukan hal yang sama

0
Peko Chan

Jika Anda ingin menyimpan kode Anda secara fungsional, gunakan peta:

theArray.map(instance => do_something);

Dengan cara ini Anda akan menghasilkan array baru untuk operasi masa depan dan akan melewati efek samping yang tidak diinginkan.

0
alejoko

Jika Anda ingin menggunakan forEach(), itu akan terlihat seperti - 

theArray.forEach ( element => {
    console.log(element);
});

Jika Anda ingin menggunakan for(), itu akan terlihat seperti - 

for(let idx = 0; idx < theArray.length; idx++){
    let element = theArray[idx];
    console.log(element);
}
0
Harunur Rashid