一.Set
基本用法:
Set本身是一个构造函数,用来生成Set数据结构。Set函数可以接受一个数组作为参数用来初始化。
const arr = new Set([2,2,3,3,4,4,5,8]); console.log(arr);
set的属性和方法
属性:
Set.prototype.constructor:构造函数,默认就是Set
函数。
Set.prototype.size:返回Set
实例的成员总数。
let set = new Set([1,1,2,2,3,4]) set.size //4
方法:
1.add(value):添加某个值,返回 Set 结构本身。
let set = new Set(); set.add(1); //Set(1){1}
2.delete:删除某个值,返回一个布尔值,表示删除是否成功。
let set = new Set(); set.add(1).add(2); //Set(2){1,2} set.delete(2); // true console.log(set); //Set(1){1}
3.has(value):返回一个布尔值,表示该值是否为Set
的成员。
let set = new Set(); set.add(1).add(2); //Set(2){1,2} set.has(2); // false
4.clear():清除所有成员,没有返回值。
let set = new Set(); set.add(1).add(2); //Set(2){1,2} set.clear(); console.log(set); //Set(0){}
可以通过Array.from方法将Set结构转为数组
let set = new Set(); set.add(1).add(2); let setArray = Array.from(set); console.log(setArray ); //[1,2]
然而,我们可以通过Set()和Array.from对数组进行去重
function deleUp(arr){ return Array.from(new Set(arr)) } let set = [1,1,2,2,3,3]; deleUp(set); //[1,2,3]
二.Map
基本用法:Map类似对象,也是键值对的集合。Map 结构提供了“值—值”的对应,是一种更完善的 Hash 结构实现。和Set()一样,Map也可以接受一个数组作为参数进行初始化。
实例的属性和方法
size:返回Map结构的成员总数。
const map = new Map(); map.set('a',true); map.set('b',false); map.size;
set(key,value):key可以是字符串、数组、undefined
const map = new Map(); map.set('name','zhangsan').set(1,'a'); //Map(2) {"name" => "zhangsan", 1 => "a"}
get(key):返回key的值,如果没有相应的key,则返回undefined
const map = new Map(); map.set('name','zhangsan').set(1,'a'); //Map(2) {"name" => "zhangsan", 1 => "a"} map.get('name'); //zhangsan
has(key)、delete(key)、clear()方法和Set实例中相关方法一样。
三、其它
关于Set和Map这里只做简单介绍,详细内容请查阅《ECMAScript 6》中的Set和Map数据结构。