Saya memiliki loop foreach sudut dan saya ingin istirahat dari loop jika saya cocok dengan nilai. Kode berikut tidak berfungsi.
angular.forEach([0,1,2], function(count){
if(count == 1){
break;
}
});
Bagaimana saya bisa mendapatkan ini?
angularjs
javascript-framework
Bocah Chubby
sumber
sumber
Jawaban:
Tidak ada cara untuk melakukan ini. Lihat https://github.com/angular/angular.js/issues/263 . Bergantung pada apa yang Anda lakukan, Anda bisa menggunakan boolean untuk tidak masuk ke dalam loop. Sesuatu seperti:
sumber
!keepGoing && return;
ke bagian atas fungsi, lebih sedikit kode.The
angular.forEach
Loop tidak dapat mematahkan pada pertandingan kondisi.Saran pribadi saya adalah menggunakan loop NATIVE FOR sebagai gantinya
angular.forEach
.Loop NATIVE FOR sekitar 90% lebih cepat daripada loop lainnya.
GUNAKAN UNTUK loop DI ANGULAR:
sumber
silakan gunakan beberapa atau setiap contoh ForEach,
Contoh untuk beberapa:
Contoh untuk setiap:
Temukan informasi lebih lanjut
http://www.jsnoob.com/2013/11/26/how-to-break-the-foreach/
sumber
Gunakan Metode Array Some
ada akan mengembalikan true, dan Anda dapat menggunakan ini sebagai variabel dalam fungsi Anda
Array Some Method - Javascript
sumber
angular.forEach()
adalah bahwa saya harus mendukung IE8, yang tidak memilikiArray.forEach()
... atauArray.some()
.Sejauh yang saya tahu, Angular tidak menyediakan fungsi seperti itu. Anda mungkin ingin menggunakan
find()
fungsi garis bawah untuk ini (itu pada dasarnya forEach yang keluar dari loop setelah fungsi mengembalikan true).http://underscorejs.org/#find
sumber
Jika Anda menggunakan jQuery (maka bukan jqLite) bersama dengan AngularJS Anda dapat mengulangi dengan $ .each - yang memungkinkan pemecahan dan melanjutkan berdasarkan pada ekspresi nilai pengembalian boolean.
JSFiddle:
http://jsfiddle.net/JEcD2/1/
Javascript:
catatan:
Meskipun menggunakan jQuery tidak buruk, baik fungsi Array.some atau Array.every asli direkomendasikan oleh MDN karena Anda dapat membaca di dokumentasi forEach asli :
Contoh-contoh berikut disediakan oleh MDN:
Array. Beberapa:
Array. Setiap:
sumber
Secara konkret, Anda dapat keluar dari
forEach
loop, dan di mana saja, melempar pengecualian.Namun, lebih baik jika Anda menggunakan pustaka lain atau mengimplementasikan fungsi Anda sendiri,
find
fungsi dalam kasus ini, sehingga kode Anda paling tinggi.sumber
Coba ini sebagai istirahat;
sumber
Sebagai jawaban lain menyatakan, Angular tidak menyediakan fungsi ini. Namun jQuery melakukannya, dan jika Anda telah memuat jQuery dan juga Angular, Anda dapat menggunakannya
Lihat http://api.jquery.com/jquery.each/
sumber
Biasanya tidak ada cara untuk memutus loop "setiap" di javascript. Yang bisa dilakukan biasanya adalah menggunakan metode "korsleting".
sumber
break
tidak mungkin untuk dicapai dalam forEach sudut, kita perlu memodifikasi forEach untuk melakukan itu.sumber
break()
perlu ditentukan atau apakah itu sudah merupakan bagian dari sudut. Silakan tentukan jika tidak.Anda bisa menggunakan ini:
sumber
sumber
sumber
Saya lebih suka melakukan ini dengan kembali. Letakkan bagian perulangan di fungsi pribadi dan kembali ketika Anda ingin memutus loop.
sumber
Saya menyadari ini sudah tua, tetapi filter array dapat melakukan apa yang Anda butuhkan:
Anda kemudian dapat menjalankan
arr.forEach
dan fungsi array lainnya.Saya menyadari bahwa jika Anda bermaksud untuk mengurangi operasi loop sama sekali, ini mungkin tidak akan melakukan apa yang Anda inginkan. Untuk itu sebaiknya Anda gunakan
while
.sumber
Contoh ini berhasil. Cobalah.
sumber
for
loop, kasus penggunaannyaforeach
tidakfor
mungkinGunakan Return untuk memutus loop.
sumber
sumber
Saya akan menggunakan
return
sebagai gantinyabreak
.Bekerja seperti pesona.
sumber
Cukup tambahkan $ index dan lakukan yang berikut ini:
sumber