(精华)2020年7月3日 JavaScript高级篇 ES6(Map数据结构)

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构造函数的参数

你可能感兴趣的:(#,Javascript,高级篇,javascript,前端)