JS-Mapオブジェクト
// # Mapとオブジェクトの違い
//
// * オブジェクトのキー(プロパティ名)は文字列のみ、Mapは任意の型をキーにできる
// * Mapはサイズを取得できる
// * Mapは空の連想配列を生成できる(オブジェクトはcreateメソッドを使用する必要がある)
// # Mapの特徴
//
// * キーは `===` 演算子で比較される
// * Mapでは例外として `NaN === Nan` として見なされる
// * 参照型の比較は参照での比較になる
const m1 = new Map()
m1.set(1, 'a')
m1.set(2, 'b')
m1.set(3, 'c')
m1.set(4, 'd')
console.log(m1.size)
console.log(m1.get(1))
console.log(m1.has(4))
m1.delete(4)
console.log(m1.has(4))
for (let key of m1.keys()) {
console.log(key)
}
for (let val of m1.values()) {
console.log(val)
}
for (let [key, val] of m1) {
console.log(key, val)
}
for (let [key, val] of m1.entries()) {
console.log(`${key} = ${val}`)
}
m1.clear()
console.log(m1.size)
const array = [[5, 'e'], [6, 'f'], [7, 'g']]
const m2 = new Map(array)
for (let [key, val] of m2) {
console.log(`${key} = ${val}`)
}