• 欢迎大家分享资料!前往留言板评论即可!

ECMAScript(ES6)基本语法介绍(三)

合宙 模组资料网 2年前 (2021-05-15) 319次浏览 0个评论 扫描二维码

6.数据结构——Set

集合的基本概念:集合是由一组无序且唯一(即不能重复)的项组成。这个数据结构使用了与有限集合相同的数学概念,应用在计算机的数据结构中。

特点:key和value相同,没有重复的value。

  • ES6提供了数据结构Set。它类似于数组,但成员值唯一的,没有重复的值
  1. 如何创建一个Set
    const s= new Set([1, 2, 3]);
    console.log(s); 
    
  2. Set类的属性

  • size:类似于数组的length
  1. Set类的方法
  • set.add(value):添加一个数据,返回Set结构本身

    “`
    s.add('a'); //向数组添加a这一元素
    s.add('b').add('c').add('d'); //链式添加
    “`

  • set.delete(value):删除指定数据,返回一个布尔值,表示是否删除成功

    “`
    console.log(s.delete('a')); //删除a,成功删除返回true,否则返回false
    “`

  • set.has(value):判断该值是否为Set的成员,返回一个布尔值

    “`
    console.log(s.has( 'a')); // 判断s中是否含有a这一元素,有则返回true,反之返回false
    “`

  • set.clear():清除所有数据,没有返回值

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

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

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

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

7.数据结构——Map

字典:是用来存储不重复key的Hash结构。不同于集合(Set)的是,字典使用的是[键,值]的形式来存储数据的。

**Object对象 **:JavaScript 的对象(Object: {})只能用字符串当作键,这给他的使用带来很大的限制。

Map:为了解决这个问题,ES6提供了Map数据结构。他类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当做键。也就是说,Object结构提供了“字符串——值”的对应,Map结构提供了“值——值”的对应,是一种完善的Hash结构实现。如果你需要“键值对应的数据结构,Map比Object更加适合。

  1. 如何创建一个Map
    var map = new Map([
     ['a', 1],
     ['b', 2]
    ]);
    
  2. Map 类的属性

  • size:类似于数组的length
  1. Map 类的方法
  • map.set(key, value):设置键名key对应的键值为value,然后返回整个Map结构。如果key已经有值,则键值会被更新,否则就会生成新的键该键。

    “`
    map.set('fengya', 'shuai').set('new', 'fq');
    “`

  • map.get(key):get方法获取key对应的键值,如果找不到key,返回undefined。

  • map.delete(key):删除某个键,返回true,如果删除失败则返回false。

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

  • map.clear():清除所有数据,没有返回值。

  • map.keys():遍历所有的键名,并将其返回。

  • map.values():遍历所有的键值,并将其返回。

  • map.entries():遍历所有的键名与键值,并将其返回。

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

  1. 实例

    <!DOCTYPE html>
    <html lang="en">
    <head>
     <meta charset="UTF-8">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     <meta http-equiv="X-UA-Compatible" content="ie=edge">
     <title>Document</title>
    </head>
    <body>
     <script>
       const Person = (function(){
         // 把对象与某个性别联系起来
         let _gender = new Map();
         function P(name, gender){
           this.name = name;
           _gender.set(this, gender);
         }
         // 获取私有属性
         P.prototype.getGender = function(){
           return _gender.get(this);
         }
         // 修改私有属性
         P.prototype.setGender = function(newGender){
           return _gender.set(this, newGender);
         }
         // P.getGenders = function(){
         //   return _gender;
         // }
         return P;
       })();
       let p1 = new Person('风雅', '男');
       let p2 = new Person('Clairoll', '男');
       p1.setGender('女');
       console.log(p1.getGender()); // 女
       console.log(p2.getGender()); // 男
     </script>
    </body>
    </html>
    
  2. 使用注意事项:

  • map的键名跟内存地址绑定,只要内存地址不一样,则就代表不同的键名
  • map里面的key的排列顺序是按照添加顺序进行排列的。

转载请注明原文链接:ECMAScript(ES6)基本语法介绍(三)
喜欢 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址