• es6 数据类型


    es6 数据类型

    map 数据类型 ===>Map 对象保存键值对

    用途 :

    • Object的key无法支持该数据时
    • 需要了解对象大小时
    • map 数据类型任何值(对象或者原始值) 都可以作为一个键。 Object 的键只能是字符串
    let myMap = new Map();
    let myMap1 = new Map();
    var keyString = 'a string';
    var keyObj = { a: 1 };
    myMap.set(keyString, "和键'a string'关联的值");
    myMap1.set(keyObj, '和键 keyObj 关联的值');
    console.log(myMap1.get(keyObj)); //和键 keyObj 关联的值
    console.log(myMap); //Map {'a string' => "和键'a string'关联的值"}
    console.log(myMap1); //Map {'a string' => "和键'a string'关联的值"}
    console.log(myMap1.size); //1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 键值对个数可以从 size 属性获取, Object 的键值对个数只能手动计算。

      //map对象遍历 for of
      for (const [key, value] of myMap1) {
        console.log(key + ' = ' + value); //[object Object] = 和键 keyObj 关联的值
      }
      
      • 1
      • 2
      • 3
      • 4
    • map 对象转 Array array 转 map

      var kvArray = [
        ['key1', 'value1'],
        ['key2', 'value2'],
      ];
      var myMap2 = new Map(kvArray);
      var myMap3 = new Map(myMap2); //克隆
      console.log(myMap2); //Map(2) {'key1' => 'value1', 'key2' => 'value2'}
      console.log(Array.from(myMap2)); //[["key1", "value1"], ["key2", "value2"]]
      console.log(myMap2 === myMap3); //false
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
    Set 对象
    • 存储任何类型的唯一值,无论是原始值或者是对象引用。
    let mySet = new Set();
    mySet.add(1);
    mySet.add('some text');
    mySet.add({ name: 'xx' });
    console.log(mySet); //Set(3) {1, 'some text', {name:xx}}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 数组转 set 类型 —>用途进行数组去重
    console.log(
      new Set([
        ['key1', 'value1'],
        ['key2', 'value2'],
        ['key2', 'value2'],
      ])
    ); // Set(3) {Array(2), Array(2), Array(2)}
    console.log(new Set(['value1', 'value2', 'value2'])); //{'value1', 'value2'}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • set 转 Array 扩展运算符
    console.log([...new Set(['value1', 'value2', 'value2'])]); //['value1', 'value2']
    
    • 1
    Symbol 原始数据类型 表示独一无二的值

    在之前,对象的键以字符串的形式存在,所以极易引发键名冲突,Symbol 最大的用法是用来定义对象的唯一属性名,为了解决属性名冲突的问题,模拟私有属性

    • 我们在不了解一个对象的时候,想为其添加一个方法或者属性,又怕键名重复引起覆盖的问题,而这个时候我们就需要一个唯一性的键来解决这个问题
    • 没有完全相等的 Symbol
    //使用Symbol("a")直接创建,所以该Symbol("a")不在全局注册表中
    let obj = {
      a: 1,
      b: 2,
    };
    let a = Symbol('a');
    let b = Symbol('a');
    obj[a] = 3;
    console.log(obj); //{a: 1, b: 2, Symbol(a): 3}
    console.log(obj[a]); //3
    console.log(b); //Symbol(a)
    console.log(a === b); //false
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 全局共享 Symbol
      //通过 Symbol.for()方法,参数为创建时传入的描述字符串,该方法可以遍历全局注册表中的的 Symbol,如果没有搜索到,就会创建一个新的 Symbol。
      let c = Symbol.for(1)
      let d = Symbol.for('c')
      console.log(c===d) //true
      
      • 1
      • 2
      • 3
      • 4

  • 相关阅读:
    2022学生用护眼灯什么品牌的好?精选学生护眼灯品牌排行榜
    每日刷题Day8
    当用get请求,接到前端传的字符串数组列表的时候,用split 分割的方式
    鸿蒙原生应用元服务开发-WebGL网页图形库开发无着色器绘制2D图形
    springboot 整合 nacos 作为注册中心
    游戏中有n条龙,每条龙都有自身力量x及战胜它后的奖励力量 y,当你的力量超过龙时,才能打败龙和获得奖励力量。你可以自由选择挑战顺序,问最后你最多能打败多少条龙?
    Windows下SSH配置多账号
    java毕业设计校园实习管理系统mybatis+源码+调试部署+系统+数据库+lw
    使用乐鑫 Web IDE 助力物联网开发
    让自定义的容器,也能基于范围循环
  • 原文地址:https://blog.csdn.net/weixin_42340514/article/details/133681726