11.ES6之Set and Map
-------------------------------------------
ES6
箭头函数
很重要
-------------------------------------------
let f =v=>v
var fun=(x,y)=>{func();}
调用函数
let f=v=>a(y);
function a(v){
console.log(v*v);
}
-------------------------------------------.
rest 参数
...a
let f=(...nums)=>a(...nums);
function a(v){
console.log(v*v);
}
f(1,2,3,4,5)
... 扩展运算符
-------------------------------------------
合并数组 ES5的方法
var arr1 = [1,2];
arr1.concat([3,4,5,6]);//得到的就是1 2 3 4 5
arr1
------------------
ES6 写法 数组合并
let arr = [4,5];
[1,2,3,...arr]
[1, 2, 3, 4, 5]
------------------------
例子二
let arr = [4,5];
[...arr,1,2,3,]
[4,5,1,2,3]
------------------
let arr1=[4,5];
let arr2=[1,2,3];
//定义了两个数组
let ss = [...arr1,...arr2];//两个数组合并 可以合并多个
//顺序要注意下 !!!!
------------------------------------
set 和 Map
类似数组 成员必须是唯一的(不能重复的值)
重复的会被过滤
本身是一个构造函数
Set (和数组很像,但是不能重复值,成员唯一。一个集合)
const arr4 = new Set();//实例 固定写法
const arr4 = new Set().add(1).add(2);//添加的方法1
添加方法2
arr4.add(1);//添加数据
arr4.add(2);//添加数据
arr4.add(3);//添加数据
conts arr4 = new Set([1,2,3,4]);//添加数据 方法3
//成员的总数 属性 Set 属性 size
size
//长度 成员的总数(属性)
arr4.size
//长度 如果有重复的 会有去重的操作 去重
------------------------------------
删除
arr4.delete(对应的值);// 返回 布尔值
has(对应的值);//布尔值 判断是不是里面的成员
clear();//全部删除 没有对应的返回值 不用传参!
如果里面有重复的两个a 删一个a a都没有了!
------------------------------------
删除演示:
const arrs = new Set(['a','b','c','d','e']);
arrs.delete('a');//删除的是对应的成员名称
arrs.has('a');
------------------------------------
全部删除
arrs.clear();//全部删除 没有对应的返回值 不用传参!
------------------------------------
set 转数组(Set 结构转数组)
const arr7 = new Set(['a','b','c','d','e']);
let arr2 = Array.from(arr7);//set 转 数组 方法
//可以借助Set 去重
------------------------------------
ES5 遍历
for ...of
for...in
const arr8 = new Set(['a','b','c','d','e']);
for(let list of arr8.keys()){
console.log(list);
}
//遍历 a-e
------------------------------------
values();//值的遍历
const arr8 = new Set(['a','b','c','d','e']);
for(let list of arr8.values()){
console.log(list);
}
------------------------------------
entries();//键值对 的遍历
const arr8 = new Set(['a','b','c','d','e']);
for(let list of arr8.entries()){//entries()
console.log(list);
}
//["a", "a"]
//["b", "b"]
//["c", "c"]
//["d", "d"]
//["e", "e"]
------------------------------------
Set 合并
const arr8 = new Set(['a','b','c','d','e']);
const arr9 = new Set(['a','b','c','d','e']);
const arr10 = [...arr8,...arr9];//合并
------------------------------------
取交集
const a = new Set(['a','b','c','d','a','b']);
const b = new Set(['a','e','r']);
const c = new Set([...a].filter(x=>b.has(x)));
//得出 a
------------------------------------
Map 和对象很像 有对应的键值对(键值对的的集合)
//也是不能重复
const m = new Map();
let str = {x:111};
m.set('shaozhu','520');//添加成员 set();
m.set(str,'520');//可以是变量
m.get("shaozhu");//获取值
同样拥有下面的属性和方法
has()//是否存在
delete()//删除
clear()//全部删除
size//成员数
-----------------------------------------
//取值更加方便了
const my = new Map({//键值对数组
['name','shaozhu'],
['name1','shaozhu'],
['name2','shaozhu']
});
for(let list of my.keys()){
console.log(list);
}
这个是SET 完全一样
keys();//键
values();//值
entries();//键值
可以操作 Set 的例子
转数组 Array.from(arr7);
-----------------------------------------