ECMAScript 6中的Set和Map数据结构

时间:2022-03-02 10:37:38

一.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数据结构。