JavaScript中的集合
集合通常由一组无序的、不能重复的元素构成
可以视为特殊的数组,只不过不同的是其中的元素没有顺序,也就无法通过索引值访问到
在ES6中其实已经包含了Set类
集合的实现
集合常见的操作
add(value)
:向集合添加一个新的项remove(value)
:从集合移除一个值has(value)
:如果值在集合中,返回true
,否则返回false
clear()
:移除集合中的所有项size()
:返回集合所包含元素的数量。与数组的length属性类似values()
:返回一个包含集合中所有值的数组
JavaScript 代码实现集合
// 封装集合的构造函数
function Set() {
// 使用一个对象来保存集合的元素
this.items = {}
// 集合的操作方法
// 判断集合中是否有某个元素
Set.prototype.has = function (value) {
return this.items.hasOwnProperty(value)
}
// 向集合中添加元素
Set.prototype.add = function (value) {
// 1.判断集合中是否已经包含了该元素
if (this.has(value)) return false
// 2.将元素添加到集合中
this.items[value] = value
return true
}
// 从集合中删除某个元素
Set.prototype.remove = function (value) {
// 1.判断集合中是否包含该元素
if (!this.has(value)) return false
// 2.包含该元素, 那么将元素删除
delete this.items[value]
return true
}
// 清空集合中所有的元素
Set.prototype.clear = function () {
this.items = {}
}
// 获取集合的大小
Set.prototype.size = function () {
var count = 0
for (var value in this.items) {
if (this.items.hasOwnProperty(value)) {
count++
}
}
return count
}
// 获取集合中所有的值
Set.prototype.values = function () {
var keys = []
for (var value in this.items) {
keys.push(value)
}
return keys
}
}