欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

详解ES6中的 Set Map 数据结构学习总结

程序员文章站 2022-06-20 08:06:54
es6中的 set 数据结构 es6 新增了一种 set 数据结构。它类似数组。 最重要的一点是 set中的结构成员没有重复的, 可用这点 一行代码实现数组去重。 s...

es6中的 set 数据结构

es6 新增了一种 set 数据结构。它类似数组。 最重要的一点是 set中的结构成员没有重复的, 可用这点 一行代码实现数组去重。 set 本身是一个构造函数。通过 new set() 来创建set结构。

  let arr1 = ['hello', 'world', 'es6']
  let set1 = new set() 
  arr1.foreach(type => {
    set1.add(type)
  }) 

通过new set创建一个set结构。 foreach 遍历arr1数组。把每一项通过set.prototype.add 方法向set结构中添加成员。

set 也可以接受一个数组作为参数。

  let arr2 = [1,2,3,4,1,5,2]
  let set2 = new set(arr2) 
  for (let type of set2) {
   console.log(type)
  }
  // 1
  // 2
  // 3
  // 4
  // 5

上面的new set() 创建 set 数据结构时, 将一个数组作为它的参数。最后通过 for of 遍历 set2。因为 结构成员没有重复, 所以打印 1 2 3 4 5

set 接受的参数不会进行 类型转换 , new set(5, '5') 这完全是两个值。

set 实现数组去重

  // 方法1 
  [...new set([1,2,3,1,2])] // 1 2 3
  
  // 方法2
  array.from(new set([1,2,3,1,2])) // 1 2 3

都是通过向 new set() 中传入一个数组, 利用 set结构成员都是唯一的特性, 最后通过扩展运算符..., 或者es6提供的一种将类数组转换为数组的方法 array.from()。

set 操作方法

  • set.prototype.add(value) 向set结构中添加一名成员, 返回值为set结构
  • set.prototype.delete(value) 删除一名成员, 返回值为布尔值。 true成功, false失败
  • set.prototype.has(value) set 成员是否存在, true为存在, false为不存在
  • set.prototype.clear() 清空所有的成员
  let arr3 = [7,8,9]
  let set3 = new set(arr3)
  set3.add(10)
  set3.size() // 4
  set3.delete(8)
  set3.size() // 3
  set3.clear() // 0

set 遍历方法

  • keys() 键名的遍历器
  • values() 键值的遍历器
  • entries() 键值对的遍历器,以数组形式返回
  let arr4 = ['javascript', 'vue', 'node.js', 'typescript']
  let set4 = new set(arr4) 
  
  // set.keys()
  for (let k of set4.keys()) {
   console.log(k)\
   // javascript
   // vue 
   // node.js
   // typescript
  } 

 // set.values()
 for (ket v of set4.values()) {
  console.log(v)
  // 和上面的set4.keys() 遍历的结果一样
 } 

 // set.entries()
 for (let e of set3.entries()) {
  console.log(e)
  // ['javascript', 'javascript']
  // ['vue', 'vue']
  // ['node.js', 'node.js']
  // ['typescript', 'typescript']
 }

可见, keys()和values() 遍历是一模一样的, 以后遍历使用keys()还是values()没有区别。entries 遍历返回的是数组, 分别是keys() values()结果。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。