美文网首页
Set 和 Map 数据结构

Set 和 Map 数据结构

作者: 简单tao的简单 | 来源:发表于2020-03-12 09:45 被阅读0次

    Set 数据结构

    ES6提供了新的数据结构Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。

    • 类似于数组
    • 成员的值是唯一的
    • Set本身是一个构造函数,用来生成 Set数据结构
    new Set([1, 2, 3,4]) //Set {1, 2, 3, 4}
    JSON.stringify(new Set([1, 2, 3,4])) // [1,2,3,4]
    new Set('aaadfdf') //Set {"a", "d", "f"}
    [...new Set('aaadfdf')] //["a", "d", "f"]
    
    Set的用处
    1. 使用 Set 可以很容易地实现并集(Union)、交集(Intersect)和差集(Difference)
    let a = new Set([1, 2, 3]);
    let b = new Set([4, 3, 2]);
    
    // 并集
    let union = new Set([...a, ...b]);
    // Set {1, 2, 3, 4}
    
    // 交集
    let intersect = new Set([...a].filter(x => b.has(x)));
    // set {2, 3}
    
    // 差集
    let difference = new Set([...a].filter(x => !b.has(x)));
    // Set {1}
    
    1. 数组去重
    let arr = [...new Set([1,1,2,3,3,3,4,4])]
    //[1, 2, 3, 4]
    
    let arr = Array.from(new Set([1,1,2,3,3,3,4,4])) //Array.from()将一个类数组对象或者可遍历对象转换成一个真正的数组
    //[1, 2, 3, 4]
    
    1. 字符串去重
    let arr = [...new Set('aaadfdf')]
    //["a", "d", "f"]
    
    let arr = Array.from(new Set('aaadfdf')) //Array.from()将一个类数组对象或者可遍历对象转换成一个真正的数组
    //["a", "d", "f"]
    

    Map数据结构

    ES6提供了Map数据结构。它类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。

    const m = new Map();
    const o = {p: 'Hello World'};
    
    m.set(o, 'content')
    console.log(m)
    //Map{Object => "content"}
    
    console.log(JSON.stringify(m))
    //[[{"p":"Hello World"},"content"]]
    
    

    Map 也可以接受一个数组作为参数。该数组的成员是一个个表示键值对的数组。

    const map = new Map([
        ['name', '张三'],
        ['title', 'Author']
    ]);
    
    console.log(map)
    //Map{"name" => "张三", "title" => "Author"}
    
    console.log(JSON.stringify(map))
    //[["name","张三"],["title","Author"]]
    
    Map的用处
    • JavaScript 的对象(Object)只能用字符串当作键,Map 数据结构“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键
    • Object 结构提供了“字符串—值”的对应,Map 结构提供了“值—值”的对应

    相关文章

      网友评论

          本文标题:Set 和 Map 数据结构

          本文链接:https://www.haomeiwen.com/subject/paxgectx.html