(精華)2020年7月3日 JavaScript高階篇 ES6(Map資料結構)

愚公搬程式碼發表於2020-07-03

Map是什麼

// map???
// es6 新提出的一種引用型別的資料結構 類似於物件
// 字元創-》值 值-》值

宣告Map資料結構

const map = new Map()
const o = {p:'hello'} // 相當於鍵 key 
map.set(o,'content') // var a = {} a.name = '張三' a.name
console.log(map.get(o));

證明是引用資料型別

// null 
typeof null 
const map = new Map()
console.log(map instanceof Map); // true 
console.log(Object.prototype.toString.call(map) === '[object Map]');

接收陣列作為引數

const map = new Map( [
    ['name','張三'],
    ['age',18]
])
console.log(map.get('name')); // 張三
console.log(map.get('age')); // 18
// map 是陣列的方法  Map 是es6新提出的一種新的 引用型別的資料結構
const m = new Map(
    [
        [123,'abc'],
        ['a',{x:1,y:2}],
        [3>1,666]
    ]
)
console.log(m.get(true)); // 666
// 404 Not found 500 InterError 404和500 都是數值
let errors = new Map([
    [404,'Not found'],
    [500,'InterError']
])
// 注意 物件作為鍵名 傳輸的是地址
// let m1 = new Map([
//     [123,'abc'],
//     [{x:1},'cdf']
// ])
// console.log(m1.get({x:1})); // undefined
let obj1 = {x:1}
let m1 = new Map([
    [123,'abc'],
    [obj1,'cdf']
])
console.log(m1.get(obj1)); // cdf

Map接收陣列作為引數的本質

// 為什麼 接收一個二元陣列 key value的形式 就可以通過 map.get()獲取到值呢
const array = [
    ['name','張三'],
    ['age',18]
]
const map = new Map()
array.forEach(
    ([key,value])=>map.set(key,value)
)

Map引數的擴充套件

// 具有迭代器 iterator 介面 每個成員都是雙元素的陣列的資料結構 都可以當做map建構函式的引數

相關文章