zoukankan      html  css  js  c++  java
  • es6----set map应用场景

    1.数组去重

    2.字符串去重

    属性:

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

    Set 实例的方法分为两大类:操作方法(用于操作数据)和遍历方法(用于遍历成员)。下面先介绍四个操作方法。

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

    遍历操作

    Set 结构的实例有四个遍历方法,可以用于遍历成员。

    • keys():返回键名的遍历器
    • values():返回键值的遍历器
    • entries():返回键值对的遍历器
    • forEach():使用回调函数遍历每个成员

    需要特别指出的是,Set的遍历顺序就是插入顺序。这个特性有时非常有用,比如使用 Set 保存一个回调函数列表,调用时就能保证按照添加顺序调用。

    (1)keys()values()entries()

    keys方法、values方法、entries方法返回的都是遍历器对象

    (2)forEach()

    Map 对象

    Map 对象保存键值对。任何值(对象或者原始值) 都可以作为一个键或一个值。

    Map方法

    复制代码
    var myMap = new Map();
    myMap.set("bar", "baz");
    myMap.set(1, "foo");
    
    myMap.size;       // 2
    myMap.has("bar"); // true
    
    myMap.clear();
    
    myMap.size;       // 0
    myMap.has("bar")  // false
    复制代码

    使用for..of方法遍历

    复制代码
    var myMap = new Map();
    myMap.set(0, "zero");
    myMap.set(1, "one");
    for (var [key, value] of myMap) {
      console.log(key + " = " + value);
    }
    // 将会显示两个log。一个是"0 = zero"另一个是"1 = one"
    
    for (var key of myMap.keys()) {
      console.log(key);
    }
    // 将会显示两个log。 一个是 "0" 另一个是 "1"
    
    for (var value of myMap.values()) {
      console.log(value);
    }
    // 将会显示两个log。 一个是 "zero" 另一个是 "one"
    
    for (var [key, value] of myMap.entries()) {
      console.log(key + " = " + value);
    }
    // 将会显示两个log。 一个是 "0 = zero" 另一个是 "1 = one"
    复制代码

    使用forEach()方法迭代映射

    myMap.forEach(function(value, key) {
      console.log(key + " = " + value);
    }, myMap)
    // 将会显示两个logs。 一个是 "0 = zero" 另一个是 "1 = one"
    Set 对象

    Set 对象允许你存储任何类型的唯一值,无论是原始值或者是对象引用。

    Set 对象方法

    复制代码
    var mySet = new Set();
    mySet.add(1);
    mySet.add("foo");
    
    mySet.size;       // 2
    mySet.has("foo"); // true
    
    mySet.clear();
    
    mySet.size;       // 0
    mySet.has("bar")  // false
    复制代码

    迭代Set对象

    复制代码
    // 迭代整个set
    // 按顺序输出:1, "some text" 
    for (let item of mySet) console.log(item);
    
    // 按顺序输出:1, "some text" 
    for (let item of mySet.keys()) console.log(item);
    
    // 按顺序输出:1, "some text" 
    for (let item of mySet.values()) console.log(item);
    
    // 按顺序输出:1, "some text" 
    //(键与值相等)
    for (let [key, value] of mySet.entries()) console.log(key);
    
    // 转换Set为Array (with Array comprehensions)
    var myArr = [v for (v of mySet)]; // [1, "some text"]
    // 替代方案(with Array.from)
    var myArr = Array.from(mySet); // [1, "some text"]
    
    // 如果在HTML文档中工作,也可以:
    mySet.add(document.body);
    mySet.has(document.querySelector("body")); // true
    
    // Set和Array互换
    mySet2 = new Set([1,2,3,4]);
    mySet2.size; // 4
    [...mySet2]; // [1,2,3,4]
    
    // 用forEach迭代
    mySet.forEach(function(value) {
      console.log(value);
    });
    复制代码

    Set 与 Array 的联系

    复制代码
    var myArray = ["value1", "value2", "value3"];
    
    // 用Set构造器将Array转换为Set
    var mySet = new Set(myArray);
    
    mySet.has("value1"); // returns true
    
    // 用...(展开操作符)操作符将Set转换为Array
    console.log([...mySet]); // 与myArray完全一致
    复制代码

    ...扩展语句

    复制代码
    扩展语法允许一个表达式在期望多个参数(用于函数调用)或多个元素(用于数组字面量)或多个变量(用于解构赋值)的位置扩展。
    
    let arr1 = [0, 1, 2];
    let arr2 = [3, 4, 5];
    
    arr1 = [...arr2, ...arr1]; 
    
    console.log(arr1) // [3, 4, 5, 0, 1, 2]
    复制代码

    应用一:Set对象数组去重

    复制代码
    var arr=[3, 62, 3, 38, 20, 42, 14, 5, 38, 29, 42];
    console.log(new Set(arr))
    可以封装一个函数
    
    function uniqueArray(arr){
        return Array.from(new Set(arr));
    }
    用这个函数可以数组去重。
    
    或者如下写也可以,比较简单的数组去重
    
    [...new Set([1,3,4,5,1,2,3,3,4,8,90,3,0,5,4,0])]
    复制代码
  • 相关阅读:
    iOS设备后台播放音乐方法
    iOS 编译64位FFMPEG
    os8 location authorization 错误.
    IOS 使用新浪微博SDK
    IOS 解析歌词lrc
    IOS 通过button获取cell
    IOS 解析XML文档
    OC .(点)与->(箭头)用法区别
    黑苹果安装合集
    Hello,World
  • 原文地址:https://www.cnblogs.com/sexintercourse/p/12269580.html
Copyright © 2011-2022 走看看