另一种失败

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

  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  另一种失败  阅读(294)  评论(0编辑  收藏  举报