Penjelasan terperinci tentang Map/WeakMap dalam kemahiran ECMAScript6_javascript

WBOY
Lepaskan: 2016-05-16 15:55:24
asal
1150 orang telah melayarinya

Objek JS itu sendiri ialah struktur nilai kunci Mengapa ES6 perlu menambah Peta Apakah perbezaan antara objek JS biasa?

1. Peta

1. Pembina Peta

Mari kita lihat penggunaan ringkas Peta dahulu

// 字符串作为key, 和JS对象类似
var map = new Map()
// set
map.set('name', 'John')
map.set('age', 29)
// get
map.get('name') // John
map.get('age') // 29
Salin selepas log masuk

Dengan kod ini, nampaknya ia tidak seringkas objek JS

Tetapi kuasa Map ialah kuncinya boleh dari sebarang jenis

// 对象作为key演示
var xy = {x: 10, y: 20}  // 坐标
var wh = {w: 100, h: 200} // 宽高
var map = new Map()
// set
map.set(xy, '坐标')
map.set(wh, '宽高')
// get
map.get(xy) // '坐标'
map.get(wh) // '宽高'
Salin selepas log masuk

Di atas menunjukkan Peta menggunakan objek sebagai kunci. Berikut ialah ilustrasi

Pembina Peta juga menyokong tatasusunan lulus

var map = new Map([["name", "John"], ["age", "29"]])
 
// 遍历key
for (var key of map.keys()) {
  console.log(key) // name, age
}

Salin selepas log masuk

2. Lelaran

Gunakan untuk daripada untuk lelaran Peta seperti Set, panggil map.keys() untuk kunci, map.values() untuk nilai dan map.entry() untuk entiti nilai kunci

var map = new Map()
// set
map.set('name', 'John')
map.set('age', 29)
// get
map.get('name') // 'John'
map.get('age') // 29
 
// 遍历key
for (var key of map.keys()) {
  console.log(key)
}
 
// 遍历value
for (var val of map.values()) {
  console.log(val)
}
 
// 遍历实体
for (var arr of map.entries()) {
  console.log('key: ' + arr[0] + ', value: ' + arr[1])
}
 
// 遍历实体的简写
for (var [key, val] of map.entries()) {
  console.log('key: ' + key + ', value: ' + val)
}
 

Salin selepas log masuk

3. Kaedah dan sifat

2. Peta Lemah

Perbezaan daripada Peta

Tidak menerima nilai jenis asas sebagai nama kunci
Tiada kunci, nilai, entri dan saiz
Terdapat kaedah berikut

Di atas adalah keseluruhan kandungan artikel ini, saya harap anda semua menyukainya.

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!