Saya selalu bertanya-tanya apa perbedaan di antara mereka. Mereka semua sepertinya melakukan hal yang sama ...
Saya selalu bertanya-tanya apa perbedaan di antara mereka. Mereka semua sepertinya melakukan hal yang sama ...
Jawaban:
Perbedaannya terletak pada nilai yang dikembalikan.
.map()
mengembalikan Array baru dari objek yang dibuat dengan mengambil beberapa tindakan pada item asli.
.every()
mengembalikan boolean - true jika setiap elemen dalam larik ini memenuhi fungsi pengujian yang disediakan. Perbedaan penting dengan .every()
adalah bahwa fungsi pengujian tidak selalu dipanggil untuk setiap elemen dalam larik. Setelah fungsi pengujian mengembalikan nilai false untuk elemen apa pun, tidak ada lagi elemen array yang diiterasi. Oleh karena itu, fungsi pengujian biasanya tidak memiliki efek samping .
.forEach()
tidak mengembalikan apa - apa - Ini mengulang Array yang melakukan tindakan tertentu untuk setiap item dalam Array.
Baca tentang ini dan banyak metode iterasi Array lainnya di MDN .
Jawaban gilly3 bagus. Saya hanya ingin menambahkan sedikit informasi tentang jenis lain dari fungsi "perulangan melalui elemen".
.every()
(berhenti mengulang saat pertama kali iterator mengembalikan false atau sesuatu yang salah).some()
(berhenti mengulang saat pertama kali iterator mengembalikan true atau sesuatu yang benar).filter()
(membuat array baru termasuk elemen di mana fungsi filter mengembalikan nilai true dan menghilangkan yang mengembalikan salah).map()
(membuat array baru dari nilai yang dikembalikan oleh fungsi iterator).reduce()
(membangun nilai dengan memanggil berulang kali iterator, meneruskan nilai sebelumnya; lihat spesifikasi untuk detailnya; berguna untuk menjumlahkan isi dari sebuah larik dan banyak hal lainnya).reduceRight()
(seperti mengurangi, tetapi berfungsi dalam urutan menurun daripada naik)kredit untuk: TJCrowder Untuk masing-masing di atas array di JavaScript?
Pertimbangan lain untuk jawaban bagus di atas adalah merangkai. Dengan forEach () Anda tidak bisa merangkai, tetapi dengan map (), Anda bisa.
Sebagai contoh:
var arrayNumbers = [3,1,2,4,5];
arrayNumbers.map(function(i) {
return i * 2
}).sort();
dengan .forEach (), Anda tidak dapat melakukan .sort (), Anda akan mendapatkan error.
Untuk Ramda , perbedaan antara R.map()
dan R.forEach()
adalah:
R.forEach()
mengembalikan array asli sedangkan R.map()
mengembalikan functorR.forEach()
hanya dapat beroperasi pada larik tetapi R.map()
juga dapat beroperasi pada suatu objek (yaitu pasangan kunci / nilai dari objek tersebut diperlakukan seperti larik)
every
danforEach
bukan metode jQuery, saya pikir pertanyaan itu tidak mungkin berhubungan dengan jQuery dengan cara apa pun. developer.mozilla.org/en/JavaScript/New_in_JavaScript/1.6