ES6之Set方法与Map方法

  ES6提供了新的数据结构——Set与Map,Set本身是一个构造函数且成员的值是唯一的,没有重复的值!!!Set()是一个存储已排序的无重复元素的数据而Map()是一对数据Map()使用关键值Key来标识每一个成员且Map()的value的值是可以重复的。

var a = new Set([1,1,2,2,3,4,5]);
console.log([...a]);        //[ 1, 2, 3, 4, 5 ]
console.log(a.size);    //5
  Set示例的方法有两大类:操作方法(增删查清)和遍历方法,下面就分别说下这两大类的方法
    第一大类:Set操作方法
      1.为Set添加值使用add()方法,add方法可以多次为set添加值但是如果添加两个相同的值则被默认为是一个值当然这也符合第一句话所说的set本身是一个构造函数且成员唯一,无重复的值!!!
var a = new Set(); 
a.add(1); 
a.add(1).add(2);         
console.log(a);        //Set { 1, 2 }
console.log(a.size);    //2

      2.为Set删除某值使用delete()方法,该方法返回的是一个布尔值,表示是否删除成功。

var a = new Set(); 
a.add(1); 
a.add(1).add(2); 
console.log(a);         //Set { 1, 2 }
console.log(a.size);     //2
a.delete(1); 
console.log(a);         //Set { 2 }
console.log(a.size);    //1

      3.判断一个参数是否为Set参数可以使用has()方法,该方法会返回一个布尔值。

var a = new Set(); 
a.add(1); 
a.add(1).add(2); 
console.log(a.has(1));         //true
console.log(a);             //Set { 1, 2 }
console.log(a.size);         //2
a.delete(1); 
console.log(a.has(1));         //false
console.log(a);             //Set { 2 }
console.log(a.size);        //1

      4.如果想清除所有Set的值那么使用clear()方法,该方法无返回值。

var a = new Set([1,2]); 
console.log(a.size);     //2
a.clear(); 
console.log(a);         //Set {}
console.log(a.size);        //0

    第二大类:Set遍历操作,一共有四种方法,其实这四种方法本质上就是一个key:value对。

let set = new Set(['red', 'green', 'blue']); 
for ( let item of set.keys() ){ 
    console.log(item); 
} // red green blue 
for ( let item of set.values() ){ 
    console.log(item); 
} // red green blue 
for ( let item of set.entries() ){ 
    console.log(item); 
} // ["red", "red"] ["green", "green"] ["blue", "blue"] 
set.forEach(function (values) { 
    console.log(values); 
}); //red green blue

  Map示例的方法有两大类:操作方法(增删查清)和遍历方法,下面就分别说下这两大类的方法。

    第一大类:Map操作方法(与Set方法类似但是没有add只有get方法读取Map)

var map = new Map([["name", "张三"], ["title", "Author"]]); 
console.log(map.size);            //2
console.log(map.has("name"));     //true
console.log(map.has("age"));      //false
console.log(map.get("name"));     //张三
console.log(map.delete("name"));  //true
console.log(map.has("name"));     //false
console.log(map.size);            //1
map.clear(); 
console.log(map.get("age"));      //undefined
console.log(map.size);            //0

    第二大类:Map遍历操作

var myMap = new Map(); 
    myMap.set(0, "zero"); 
    myMap.set(1, "one"); 
    for (var key of myMap.keys()) { 
        console.log(key);                     //0 1
    } 
    for (var value of myMap.values()) { 
        console.log(value);                     //zero one
    } 
    for (var item of myMap.entries()) { 
        console.log(item[0] + " = " + item[1]);     //0 = zero 1 = one
    } 
    myMap.forEach(function(value, key) { 
        console.log(key + " = " + value); }, myMap);    //0 = zero 1 = one    

  最后简单的说下weakset与weakmap,他与set类似的有WeakSet()该方法无法遍历也没有size属性,他的成员只能是对象而不能是其他类型的值,他有三个方法.add()、.has()和.delete()方法,顺便说下如果WeakSet()方法没有被其他对象所引用那么就会被垃圾回收,与他类似的有WeakMap()。

posted on 2017-10-21 17:00  另一种失败 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/qiaohong/p/7705218.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值