<script>
// es6提供了一个新的数据结构Set,他类似于数组,所有的成员的值都是唯一的,没有重复的值
// Set本身是一个构造函数,用来生成Set数据结构
let x = new Set();
console.log(x);
// // 往set数据结构里面添加内容
[1,2,3,4,5,6,7,8,9].forEach(index => x.add(index))
console.log(x);
for(let i of x){
console.log(x);
}
// Set函数可以接受一个数组作为参数,用来初始化
let set = new Set([1,1,2,2,3,3,4,4]);
console.log([...set]); //1,2,3,4
let set = new Set([1,2,3,4,5,6,6,6,6]);
// console.log(set.size); //6
// 数组去重
// 去掉重复的成员
// 可不可以应用于字符串呢?
console.log([...new Set("asdfasdf")]);
let set = new Set();
console.log(set);
let a = NaN;
let b = NaN;
set.add(a);
set.add(b);
console.log(set);
console.log(Object.is(a,b));
// 往Set添加值的时候,会认为NaN等于自身,两个NaN是相等的
// let set = new Set();
// set.add({});
// console.log(set.size);
// set.add({});
// console.log(set.size);
// 在Set中,两个对象总是不相等的,所以把上述两个对象视为两个值
// size返回的是Set实例的成员总数
// add添加某个值
// delete删除
// has()是否含有
// clear()清除所有成员
let set = new Set();
set.add({});
set.add({});
console.log(set.size);
set.clear();
console.log(set);
let set = new Set();
set.add(1).add(2).add(2)
console.log(set.size);
console.log(set.has(1));
console.log(set.has(3));
</script>
map
<script>
// 官方解释
// es6提供了Map数据结构,类似于对象,也就是键值对的集合,但是,键的范围不限于字符串,各种类型都可以当作键
let mp = new Map();
console.log(mp);
let o = {x:"hello"};
console.log(o);
mp.set(o,"content");
console.log(mp);
console.log(mp.get(o));
console.log(mp.has(o));
// set方法进行设置
// get方法获取某一个键的值
mp.delete(o);
console.log(mp);
let mp = new Map([
["name","卡卡西"],
["age","30"]
])
console.log(mp.size);
console.log(mp.has("name"));
console.log(mp.get("name"));
console.log(mp.get("age"));
</script>