es6之Symble和Map
2019-07-14 本文已影响0人
关耳木南
<script type="text/javascript">
// Symbol值只能转为string和boolean
var a = Symbol("123");//传的参数是标记
var b = Symbol();
console.log(a);
console.log(b)
/*
Set : es6提供了新的数据结构,类似于数组,但成员的值都是唯一的
没有重复值
方法:add() delete() has() clear()
WeakSet 和Set一样,区别有2点
1、WeakSet的值只能是对象
*/
const s = new Set();
s.add(1);
console.log(s);
s.add(2);
console.log(s);
[2,3,4,5,2,2].forEach(x => s.add(x));//通过add()方法添加元素
for(let i of s){
console.log(i)
}
//去重
const arr=[1,2,3,1,3,5,6,7];
arr1 = [...new Set(arr)];
console.log(arr1);
</script>
<script type="text/javascript">
/*
Map : 各种类型的值(包括对象)都可以当做键
WeakMap : 和Map类似
区别:WeakMap只接受对象作为键名,
WeakMap的键名所指向的对象,不计入垃圾回收机制
*/
const m = new Map();
const o = {p:'hello'};
m.set(o,"content");//设置set()
console.log(m.get(o));// content 获取get()
m.has(o);//是否存在
m.delete(o);//删除
m.has(o)
</script>