Kunci objek polos harus berupa string, sedangkan a Map
dapat memiliki kunci jenis apa pun.
Tetapi saya tidak banyak menggunakan ini dalam praktik. Di hampir semua kasus, saya tetap menggunakan string sebagai kunci. Dan mungkin new Map()
lebih lambat dari {}
. Jadi, apakah ada alasan lain mengapa mungkin lebih baik menggunakan Map
objek biasa?
javascript
ecmascript
es6
callum
sumber
sumber
map.set('foo', 123)
melakukan lebih cepat daripadaobj.foo = 123
? Jika demikian, itu sangat mengejutkanJawaban:
Ada beberapa alasan mengapa saya lebih suka menggunakan objek
Map
s over plain ({}
) untuk menyimpan data runtime (cache, dll):.size
properti membuat saya tahu berapa banyak entri ada dalam Peta ini;.clear()
,.forEach()
, dll;Setiap kasus lain, seperti melewati argumen fungsi, menyimpan konfigurasi dan lain-lain, semuanya ditulis menggunakan objek polos.
Juga, ingat: Jangan mencoba mengoptimalkan kode Anda terlalu dini. Jangan buang waktu Anda melakukan tolok ukur objek biasa vs Peta kecuali proyek Anda mengalami masalah kinerja.
sumber
===
:)Map
menggunakan algoritma SameValueZero. developer.mozilla.org/en-US/docs/Web/JavaScript/…Map
menggunakan ini atau itu?Saya tidak yakin tentang ini, tapi saya pikir kinerja BUKAN alasan untuk menggunakan Maps. Lihatlah halaman jsperf yang diperbarui ini:
http://jsperf.com/es6-map-vs-object-properties/73
Sepertinya (ketika berhadapan dengan string paling tidak) objek jauh lebih cepat daripada peta untuk pengaturan dasar dan mendapatkan.
sumber
Jawaban lain tidak menyebutkan satu perbedaan terakhir antara objek dan
Map
s:Kutipan dari MDN , beri penekanan pada saya
Ini adalah alasan utama saya memutuskan untuk menggunakan
Map
untuk pertama kalinya dalam proyek baru-baru ini. Saya memiliki objek normal yang perlu saya tampilkan di<table>
, dengan setiap properti berada di baris tertentu.Saya menulis fungsi untuk mengubah objek menjadi
Map
sesuai dengan urutan kunci yang diinginkan:Maka peta bisa diulangi dalam urutan yang diinginkan:
Tentu saja ini sedikit dibuat-buat karena orang bisa juga menampilkan ketika iterating atas urutan properti tanpa membuat
Map
dalam proses:Tetapi jika Anda memiliki larik objek seperti itu dan akan menampilkannya di banyak tempat, lalu mengonversinya semua menjadi peta terlebih dahulu masuk akal.
sumber