Map和Set

作者: 转移到CSDN名字丹丹的小跟班 | 来源:发表于2021-02-26 09:15 被阅读0次

    Map对象

    Map 对象保存键值对。任何值(对象或者原始值) 都可以作为一个键或一个值。(甚至可以是NaN,虽然NaN连自己都不相等,但是NaN作为Map的键来说是没有区别的)

    Maps 和 Objects 的区别:

    Maps 和 Objects 的区别

    map方法属性

    • Map.prototype.constructor 返回一个函数,它创建了实例的原型。默认是map函数。会自动隐藏。
    • Map.prototype.size 返回Map对象的键/值对的数量

    map方法属性

    • Map.prototype.clear() 移除Map对象的所有键/值对 。
    • Map.prototype.delete(key) 如果 Map 对象中存在该元素,则移除它并返回 true;否则如果该元素不存在则返回 false。随后调用Map.prototype.has(key) 将返回 false 。
    • Map.prototype.forEach(callback, thisArg) 按插入顺序,为 Map对象里的每一键值对调用一次callbackFn函数。如果为forEach提供了thisArg,它将在每次回调中作为this值。
    • Map.prototype.has(key) 返回一个布尔值,表示Map实例是否包含键对应的值。
    • Map.prototype.set(key, value) 设置Map对象中键的值。返回该Map对象。
    • Map.prototype.entrise() 返回一个新的 Iterator 对象,它按插入顺序包含了Map对象中每个元素的 [key, value] 数组。
    • Map.prototype.keys() 返回一个新的 Iterator对象, 它按插入顺序包含了Map对象中每个元素的键 。
    • Map.prototype.values() 返回一个新的Iterator对象,它按插入顺序包含了Map对象中每个元素的值 。

    Map与数组的关系

    let kvArray = [["key1", "value1"], ["key2", "value2"]];
    
    // 使用常规的Map构造函数可以将一个二维键值对数组转换成一个Map对象
    let myMap = new Map(kvArray);
    
    myMap.get("key1"); // 返回值为 "value1"
    
    // 使用Array.from函数可以将一个Map对象转换成一个二维键值对数组
    console.log(Array.from(myMap)); // 输出和kvArray相同的数组
    
    // 更简洁的方法来做如上同样的事情,使用展开运算符
    console.log([...myMap]);
    
    // 或者在键或者值的迭代器上使用Array.from,进而得到只含有键或者值的数组
    console.log(Array.from(myMap.keys())); // 输出 ["key1", "key2"]
    

    Set对象

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

    • +0 与 -0 在存储判断唯一性的时候是恒等的,所以不重复;
    • undefined 与 undefined 是恒等的,所以不重复;
    • NaN 与 NaN 是不恒等的,但是在 Set 中只能存一个,不重复。

    Set属性

    • Set.prototype.constructor 返回一个函数,它创建了实例的原型。默认是map函数。会自动隐藏。
    • Set.prototype.size 返回Map对象的键/值对的数量

    Set方法

    • Set.prototype.clear() 移除Set对象内的所有元素。 。
    • Set.prototype.delete(key) 如果 Map 对象中存在该元素,则移除它并返回 true;否则如果该元素不存在则返回 false。随后调用Map.prototype.has(key) 将返回 false 。
    • Set.prototype.forEach(callback, thisArg) 按插入顺序,为 Set对象里的每一键值对调用一次callbackFn函数。如果为forEach提供了thisArg,它将在每次回调中作为this值。
    • Set.prototype.has(key) 返回一个布尔值,表示Set实例是否包含键对应的值。
    • Set.prototype.add(value) 设置Set对象中的值。返回该Set对象。
    • Set.prototype.entrise() 返回一个新的 Iterator 对象,它按插入顺序包含了Set对象中每个元素的 [key, value] 数组。
    • Set.prototype.keys() 返回一个新的 Iterator对象, 它按插入顺序包含了Set对象中每个元素的键 。
    • Set.prototype.values() 返回一个新的Iterator对象,它按插入顺序包含了Map对象中每个元素的值 。

    相关文章

      网友评论

          本文标题:Map和Set

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