Di jQuery, map
dan each
fungsinya tampaknya melakukan hal yang sama. Apakah ada perbedaan praktis antara keduanya? Kapan Anda memilih untuk menggunakan salah satu daripada yang lain?
javascript
jquery
dthrasher
sumber
sumber
Jawaban:
The
each
Metode ini dimaksudkan untuk menjadi sebuah iterator berubah, di mana sebagaimap
metode dapat digunakan sebagai iterator, tetapi benar-benar dimaksudkan untuk memanipulasi array disediakan dan mengembalikan array baru.Hal penting lain yang perlu diperhatikan adalah bahwa
each
fungsi mengembalikan array asli sementaramap
fungsi mengembalikan array baru. Jika Anda terlalu sering menggunakan nilai kembali fungsi peta, Anda berpotensi membuang banyak memori.Sebagai contoh:
Anda juga dapat menggunakan fungsi peta untuk menghapus item dari array. Sebagai contoh:
Anda juga akan mencatat bahwa fungsi
this
ini tidak dipetakanmap
. Anda harus menyediakan parameter pertama dalam panggilan balik (misalnya, kami menggunakan dii
atas). Ironisnya, argumen panggilan balik yang digunakan dalam setiap metode adalah kebalikan dari argumen panggilan balik dalam fungsi peta jadi hati-hati.sumber
return false;
1: Argumen ke fungsi panggilan balik dibalik.
.each()
Fungsi callback 's,$.each()
' s, dan.map()
's mengambil indeks terlebih dahulu, dan kemudian elemen$.map()
Callback memiliki argumen yang sama, tetapi dibalik2:
.each()
,,$.each()
dan.map()
melakukan sesuatu yang istimewa dengannyathis
each()
memanggil fungsi sedemikian rupa yangthis
menunjuk ke elemen saat ini. Dalam kebanyakan kasus, Anda bahkan tidak memerlukan dua argumen dalam fungsi panggilan balik.Untuk
$.map()
ituthis
variabel mengacu pada objek window global.3:
map()
melakukan sesuatu yang istimewa dengan nilai pengembalian callbackmap()
memanggil fungsi pada setiap elemen, dan menyimpan hasilnya dalam array baru, yang dikembalikan. Anda biasanya hanya perlu menggunakan argumen pertama dalam fungsi panggilan balik.sumber
function shout() { alert(this + '!') } result = $.each(['lions', 'tigers', 'bears'], shout)
menghasilkan hasil yang salah itu bertentangan dengan jawaban Anda !! jsfiddle.net/9zy2pLevresult === ['lions', 'tigers', 'bears']
The
each
fungsi iterates atas sebuah array, memanggil fungsi yang disediakan sekali per elemen, dan pengaturanthis
untuk elemen aktif. Ini:akan mengingatkan
5..
maka4..
kemudian3..
kemudian2..
kemudian1..
Peta di sisi lain mengambil array, dan mengembalikan array baru dengan setiap elemen diubah oleh fungsi. Ini:
akan menghasilkan s
[25, 16, 9, 4, 1]
.sumber
saya memahaminya dengan ini :
jadi, " setiap " fungsi mengembalikan array asli sementara fungsi " peta " mengembalikan array baru
sumber
sumber
Jquery.map lebih masuk akal ketika Anda melakukan pekerjaan pada array karena berkinerja sangat baik dengan array.
Jquery.each paling baik digunakan saat iterasi melalui item pemilih. Yang dibuktikan bahwa fungsi peta tidak menggunakan pemilih.
seperti yang Anda lihat, peta tidak dimaksudkan untuk digunakan dengan penyeleksi.
sumber