前端开发JavaScript 进阶营

ES6 入门之 set 和 map、解构

2017-08-23  本文已影响73人  不要和我名字一样

1 、解构

解构赋值是ES6中推出的一种高效、简洁的赋值方法

     let [,,third] = [1,2,3];
     console.log(third); //3

     let [first,...last] = [1,2,3];
     console.log(last); //[2,3]
//   对象的解构赋值
   let {name,sex} = {"name":"huangsen","sex":"nan"};
   console.log(name);

2、Rest + Spread

 function f(x, ...y) {
       console.log(x * y.length);
  }
 f(3, "hello","222","111"); 
 function add(x,y,z) {
       console.log(x+y+z);
 }
 add(...[1,2,3]);//6

3、Map + Set + WeakSet

Set对象是一组不重复的值,重复的值将被忽略,值类型可以是原始类型和引用类型WeakSet也是不重复的值的集合,但是只能用来存放对象。Set的用法:set数据类型的元素,必须是唯一的;添加重复的元素不会报错,只是不会生效;Map结构提供了“值—值”的对应,是一种更完善的Hash结构实现。如果你需要“键值对”的数据结构,Map比Object更合适。它类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。

      //有四个方法:
      1.  add(value):添加某个值,返回Set结构本身。
      2.  delete(value):删除某个值,返回一个布尔值,表示删除是否成功。
      3.  has(value):返回一个布尔值,表示该值是否为Set的成员。
      4.  clear():清除所有成员,没有返回值

      let s = new Set();
      s.add("hello").add("goodbye").add("hello");
      console.log(s.size);//2
      console.log(s.has("hello"))  //true

        let s = new Set([1,2,3,4,5,6]);
        s.forEach((item)=>{
             console.log(item)//1,2,3,4,5,6
        });
   //   map常用的属性值和方法
   1.  map.size 长度
   2.  set设置,get获取
   3.  delete() 删除; clear()清空
        // Maps
        let m = new Map();
        m.set("hello", 42);
        m.set(s, 34);
        console.log(m.get(s)); //34
        console.log(m.get("hello"))  //42

map的其他方法:http://www.cnblogs.com/dagaoxiaozheng/p/6605981.html

       var ws = new WeakSet();
       ws.add({ data: 42 });

4、WeakSet 和 Set 的区别:

5、WeakMap的用法

-weakMapmap的区别:

6、Map的用法

7、WeakMap 和 WeakSet 被设计来完成与Map、Set几乎一样的行为,除了以下一些限制:

8、求两个集合的交集、并集、差集

  let set1 = new Set([1, 2, 3, 4, 5, 6]);
  let set2 = new Set([4, 5, 6, 7, 8, 9]);
  //并集
        let union = new Set([...set1, ...set2]);
        union.forEach((item)=>{
            console.log(item);//1,2,3,4,5,6,7,8,9
        });
   //交集
        let intersect = new Set([...set1].filter(x => set2.has(x)));
        intersect.forEach((item)=>{
            console.log('交集:'+item);//4,5,6
        });
  //差集
        let intersect1 = new Set([...set1].filter(x => !set2.has(x)));
        intersect1.forEach((item)=>{
            console.log('差集:'+item);//1,2,3
        });

9、数组去重

        let arr = [12,13,12,11,0];
        let arr1 = Array.from(new Set(arr));
        console.log(arr1);//输出:12,13,11,0
        let arr = [12,13,12,11,0];
        let arr1 = [...new Set(arr)];
        console.log(arr1);
上一篇下一篇

猜你喜欢

热点阅读