zoukankan      html  css  js  c++  java
  • ES6数据结构Set、Map

    一、Set数据结构

    Set是无序的不可重复的多个value的集合体,Set结构是类似于数组结构,但是Set中的值都不能重复

    常用的属性和方法

    • size:返回set实例的成员总数

    • add():添加某个值,返回set本身

    • delete():删除某个值,返回一个布尔值,判断删除是否成功

    • has():返回一个布尔值,表示该值是否为set成员

    • clear():清除所有成员,没有返回值

    • keys():返回键名的遍历器

    • values():返回键值的遍历器

    • entries():返回键值对的遍历器

    • forEach():使用回调函数遍历每个成员

    例子1:创建set

        let set = new Set([1,2,4,6,6,3,2])
        console.log(set) //{1, 2, 4, 6, 3} 重复项自动过滤掉

    例子2:数组去重

    方法一:扩展运算符+set

    let arrs=[1,1,3,3,4,5,6];
    let unique=[...new Set(arrs)];
    console.log(unique);//1,3,4,5,6

    方法二:Array.from()+set

    Array.from()可以将set结构转为数组,这就提供了去除数组重复成员的另一种方法

        let arr = [1,2,3,4,5,4,23,1,3];
        let arr_set = Array.from(new Set(arr));
        console.log(arr_set) //[1, 2, 3, 4, 5, 23]

    例子3:set中添加的值不会发生类型转换

    let mySet=new Set();
    mySet.add(5);
    mySet.add('5');
    console.log(mySet);//5,'5'
    let set=new Set();
    let a=NaN;
    let b=NaN;
    set.add(a);
    set.add(b);
    console.log(set);//NaN

    向 Set 加入值的时候,不会发生类型转换,所以5"5"是两个不同的值。Set 内部判断两个值是否不同,使用的算法叫做“Same-value-zero equality”,它类似于精确相等运算符(===),主要的区别是向 Set 加入值时认为NaN等于自身,而精确相等运算符认为NaN不等于自身。

    例子4:向set中添加的对象总是不想等

    let set=new Set();
    set.add({});//向set中添加一个空对象
    console.log(set.size);//1
    set.add({});//向set中添加另一个空对象
    console.log(set.size);//2

    二、Map数据结构

    Map容器:无序的key,多个不重复的key-value的集合体,即以键值对的形式存储数据,也叫Hash结构

    常用的属性和方法

    • size:返回map结构的成员总数

    • set(key,value):设置键名key对应的键值value,然后返回整个map结构,如果key已经有值,则键值会被更新,否则就新生成该键

    • get(key):读取key对应的键值,如果找不到key,则返回undefined

    • has(key):返回一个布尔值,表示某个键是否在当前map对象中

    • delete(key):删除某个key,返回true,如果删除失败,返回false

    • clear():清除所有成员,没有返回值

    • keys():返回键名的遍历器

    • values():返回键值的遍历器

    • entries():返回键值对的遍历器

    • forEach():遍历map的所有成员

    例子1:创建map

        let map = new Map([['aaa', 'username'], [36, 'age'], ['sex', '男']]) //以二维数组的形式
        console.log(map) //{"aaa" => "username", 36 => "age", "sex" => "男"}
        map.set(78, 'hhhh')
        console.log(map) //{"aaa" => "username", 36 => "age", "sex" => "男", 78 => "hhhh"}

    参考:

    https://www.cnblogs.com/jjgw/p/11561169.html

    不积跬步无以至千里
  • 相关阅读:
    前端之JavaScript内容
    前端之CSS内容
    前端之HTML内容
    表单提交中的input、button、submit的区别
    PostgreSQL
    PostgreSQL
    PostgreSQL
    JIRA中的标记语言的语法参考
    Markdown
    Linux
  • 原文地址:https://www.cnblogs.com/lyt0207/p/12068506.html
Copyright © 2011-2022 走看看