ES6 提供了新的数据结构 Set。它相似于数组,可是成员的值都是惟一的,没有重复的值。数组
用法:new Set([iterable])数据结构
const set = new Set([1, 2, 3, 4, 4, 4]); //[1, 2, 3, 4]
Set结构有如下属性:函数
Set结构有如下方法:prototype
const set = new Set(); //添加元素 set.add(1).add(2).add(2); set.size; //2 //检查元素 set.has(2); //true set.has(3); //false //删除元素 set.delete(2); set.has(2); //false //清空集合 set.clear(); set.size; //0
一些常见应用code
//数组去重 let arr = [1, 2, 3, 2, 5, 5]; let unique = [...new Set(arr)]; // [1, 2, 3, 5] //交,并,差集 let a = new Set([1, 2, 3]); let b = new Set([4, 3, 2]); // 并集 let union = new Set([...a, ...b]); // Set {1, 2, 3, 4} // 交集 let intersect = new Set([...a].filter(x => b.has(x))); // set {2, 3} // 差集 let difference = new Set([...a].filter(x => !b.has(x))); // Set {1}
JavaScript 的对象(Object),本质上是键值对的集合(Hash 结构),可是传统上只能用字符串看成键。ES6中的Map结构也是键值对的集合,可是“键”的范围不限于字符串,各类类型的值(包括对象)均可以看成键。对象
用法:new Map([iterable])ip
const map = new Map();
属性和方法字符串
const map = new Map(); //添加键值对 map.set(1, 'aaa'); map.set(2, 'bbb').set('string', 'sssss'); map.get(1); // 'aaa' map.size; // 3 //删除键值 map.delete(2); map.has(2); //false //遍历方法 for(let key of map.keys()){ console.log(key); } // 1 // 'string' for(let key of map.values()){ console.log(key); } // 'aaa' // 'sssss' map.forEach(function(value, key, map){ console.log('key:'+key+', value:'+value) }) // 'key:1, value:aaa' // 'key:string, value:sssss'