详解ES6中的 Set Map 数据结构学习总结
程序员文章站
2023-10-27 23:16:16
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()结果。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。