zoukankan      html  css  js  c++  java
  • ES6-set && 数组剔重

    set

    Set:ES6中提供的新的数据结构set。特点:1.类似数组,属性值时唯一的!!2.Set本身是一个构造函数,用来生成数据结构,表现形式{1,"3",78},是个数据集合

      var s = new Set();
         s.add(1).add(2).add(3).add(3).add(NaN).add(NaN).add({}).add({});
         console.log(s);//Set {1, 2, 3, NaN, Object {}, Object {}}

    【注意】:

    • 1.set里的成员是唯一的:所有只有一个3

    • 2.NaN在此是个特殊,也只能打印出一个NaN

    • 3.此处的对象是对应两个引用,所以是两个object

    Set的属性和方法

    属性:
    • 1.Set.prototype.constructor:构造函数,默认就是Set函数。

    • 2.Set.prototype.size:返回Set实例的成员总数。

    方法:
    1. 1.add(value); 添加某个值,返回Set结构本身

    2. delete(value); 删除某个值,返回一个布尔值,表示删除是否成功

    3. has(value); 返回一个布尔值,表示该值是否为Set的成员4. clear(); 清除所有成员,没有返回值

    试问:我们现在如何拿到其中一个任意值?

    四种遍历的方法,用于遍历成员,配合for of使用

    1.keys(); 返回一个键名的遍历器

    2.values(); 返回一个键值的遍历器(这里的键值都是一个东西)

    3.entries():返回一个键值对的遍历器

    4.for in:使用回调函数遍历每个成员for in:使用回调函数遍历每个成员

     var md = new Set([1,43,56,"lalala"]);
        for(let item of md){
           console.log(item);
        }
         // 1
         // 43
         // 56
         // lalala
    

      

     

    // keys(); 返回一个键名的遍历器

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

      

    // values(); 返回一个键值的遍历器(这里的键值都是一个东西)

    for(let item of set.values()){
                   console.log(item);
                }
                // red
                // green
                // blue
    

      

    // entries():返回一个键值对的遍历器

    for(let item of set.entries()){
               console.log(item);
            }
            // ["red", "red"]s
            // ["green", "green"]
            // ["blue", "blue"]
    

      

    【数组剔重】(几种方法)

    // 源生的方法一:

     var arr=[3,5,7,8,10,4,2,3,3,3,4,2];
        var nArr = [];
           for(let i = 0; i < arr.length; i++){
              if(nArr.indexOf(arr[i]) === -1){
                 nArr.push(arr[i]);
              }
           }
        console.log(nArr);//[3, 5, 7, 8, 10, 4, 2]
    

      

    //源生的方法二

     var arr=[3,5,7,8,10,4,2,3,3,3,4,2];
        for(var i = 0; i < arr.length; i++){
           for(var j = i+1; j <arr.length; j++){
              if(arr[i]==arr[j]){
                 arr.splice(j,1);
                 j--;
              }
           }
        }
        console.log(arr);
    

      

    //方法三:利用set里的值唯一的属性

      var arr99 = new Set(arr);
        console.log(arr99);//Set {3, 5, 7, 8, 10…}
        //再来解构一下,变成[]
        var arr88 = [...arr99];
        console.log(arr88);//[3, 5, 7, 8, 10, 4, 2]
    

      

  • 相关阅读:
    七色花基本权限系统(6)- 让EntityFramework Code First自动合并/迁移/数据初始化
    koa 上传图片,上传文件,批量上传文件,批量上传图片...
    js 正则匹配标签,过滤标签不保留内容和过滤标签保留内容,过滤标签的的属性
    js 用xlsx读取excel、json_to_execl、excel_to_json导入导出
    css 心形动画 爱心动画
    NodeJs + koa2 + sequelize-auto + sequelize 搭建项目
    非框架, 纯原生JS “商品详情跳转到商品列表,并记录高度“ 的写法思路
    vue 渲染完成事件
    promise扩展一个stop方法
    vue中引入第三方字体图标库iconfont,及iconfont引入彩色图标
  • 原文地址:https://www.cnblogs.com/zhaowenxin/p/6160701.html
Copyright © 2011-2022 走看看