ES6 Map结构数据

一.Map结构数据

1. 传统对象键名必须为字符串

let obj = {a:1, 666:2}; console.log(666);-->报错

2.map结构数据是一种“值-值”对应关系

let m = new Map();
m.set(123,'abc');
console.log(m.get(123));
--> abc

二.Map结构数据初始化和方法

1. 可直接传入键值对二维数组

2. get()-获得数据

let m = new Map([
    [123,'abc'],
    ['a',{x:1,y:2}],
    [3>1,666]
]);
获得数据
console.log(m.get(true));
-->返回666

3. has()-查找有没有字符串对应的值

接上面例子

m.has('a');-->true

4. delete()-删除

m.delete(123);

三.map结构对象键名特点

1. 传址特点--对象作为键名,传输的是地址,所以下例中的两个{x:1}虽然长相一样,但实际值不同(存储在堆内存的两个位置)

let m = new Map([
    [123,'abc'],
    [{x:1},'cdf'],
]);
console.log(m.get({x:1}));
-->undefined

可以修改成下面形式

let obj = {x:1};
let m = new Map([
    [123,'abc'],
    [obj,'cdf'],
]);
console.log(m.get(obj));
-->cdf

四.map结构遍历

1. keys()-->将键名都取出来,组成一个可遍历的数据集合

let m = new Map([
    [123,'abc'],
    ['a','hahaha'],
    [1>2,'baidu.com']
]);
for(let x of m.keys()){
    console.log(x);
}
-->123 a false

2. values()

let m = new Map([
    [123,'abc'],
    ['a','hahaha'],
    [1>2,'baidu.com']
]);
for(let x of m.values()){
    console.log(x);
}
-->abc hahaha baidu.com

3. entries()

let m = new Map([
    [123,'abc'],
    ['a','hahaha'],
    [1>2,'baidu.com']
]);
for(let x of m.entries()){
    console.log(x);
}
-->
Array[123,'abc']
Array['a','hahaha']
Array[false ,'baidu.com]

4. forEach()--第一个参数代表键值,第二个参数代表键名

let m = new Map([
    [123,'abc'],
    ['a','hahaha'],
    [1>2,'baidu.com']
]);
m.forEach(x=>{
    console.log(x);
})
-->返回abc hahaha baidu.com


m.forEach((x,y)=>{
    console.log(x,y);
})
-->返回
abc 123 
hahaha a
baidu.com false

五.map结构扩展运算符

1.



输出hd

2.

输出Array[123,'hd']

你可能感兴趣的:(ES6 Map结构数据)