symbol&&Map&&Set

symbol

     es5中基本数据:null undefined number string boolean

     es6新增数据:symbol 生成一个独一无二的数据

      let s1 = Symbol(100);

      let s2 = Symbol(100);

      console.log(s1, s2, s1 == s2); //Symbol(100) Symbol(100) false

      var a = 100;

      a.age = 20; //隐性将a转换为一个对象,执行完立即释放

      console.log(a.age); //undefined 上一个释放了,这个是重新创建的没有值

 Map

      es6出的新数据容器:数据是二维数据的形式,可以存任何数据

      Map没有创建的语法糖

      var m1 = new Map([[1, 2]], [[[1, 2, 3], 2]]); //初始化 第一个值为key 后面为value

      console.log(m1); //Map(1) {1 => 2}

      取数据

      console.log(m1.get(1)); //2 只能通过get取值 注意引用数据取值 不是一个空间会取不到

      存数据

      console.log(m1.set("名字", "张三")); //Map(2) {1 => 2, '名字' => '张三'}

      其他方法

    console.log(m1.size); //2 数据的长度

    console.log(m1.delete(1)); //true 删除元素 返回布尔值

    m1.clear(); //数据全部清除

    console.log(m1); //Map(0) {size: 0}

 Set

     var s1 = new Set();

      s1.add(100); //添加元素

      s1.add("123"); //添加元素

      console.log(s1); // {100, '123'}

      s1.forEach(function (el) {

        console.log(el);

      }); //可以通过forEach遍历取数据

      var arr = [1, 2, 3, 5, 5, 5];

      var s2 = new Set(arr);

      console.log(s2); //{1, 2, 3, 5} 遍历数组 将数组中的元素通过调用add添加进集合中并进行去重

      console.log(Array.from(s2)); //[1, 2, 3, 5] 取出容器中的所有数据 然后存入新数组中返回

  扩展运算符

      var arr = [1, 2, 3, 4, 5];

      console.log(...arr); //1 2 3 4 5 将数组展开 执行的取出操作 元素为引用对像时 不会重新创建

购物车案例 只有大概思路


      var mycar = {
        data: new Map(),
        clear: function () {
          this.data.clear();
        },
        jianshao: function (id) {
          //减少 通过id 找到对应的count 进行减少
          let obj = this.data.get(id);
          if (obj) {
            obj.count--;
            if (obj.count <= 0) {
              //如果菜品数量为0 就将其删除
              this.data.delete(id);
            }
          }
        },
        add: function (id) {
          let obj = this.data.get(id);
          if (obj) {
            obj.count++;
            this.data.set(id, obj);
          }
        },
        total: function () {
          var result = 0;
          this.data.forEach(function (el) {
            console.log(el);
            result += el.count * el.price;
          });
          return result;
        },
        network: function () {
          var jiashuju = [
            {
              id: 001,
              title: "鱼香肉丝",
              price: 18,
              count: 1,
            },
            {
              id: 002,
              title: "东坡肉",
              price: 28,
              count: 1,
            },
            {
              id: 003,
              title: "米饭",
              price: 2,
              count: 2,
            },
          ];

          var self = this;
          jiashuju.map(function (el) {
            self.data.set(el.id, el);
          });
        },
      };
      mycar.network();
      mycar.add(001);
      mycar.jianshao(002);
      console.log(mycar.data);
      var re1 = mycar.total();
      console.log(re1);
      mycar.clear();
      console.log(mycar.data);

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

思考猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值