集合的概念
集合是由一组无序的,不能重复的元素构成
集合可以理解为一个特殊的数组:
- 特殊之处在于里面的元素没有顺序,也不能重复
- 没有顺序意味着不能通过下标进行访问,不能重复意味着相同的对象在集合中只会存在一份
集合里面不需要封装一个内部类,用于保存其他东西,不需要,集合里面放的就是一个个元素,和链表优先级队列不太一样
set集合类中的常见方法
// 封装集合类
function Set(){
// 属性
this.items={}
// 方法
//① remove 方法 移除操作
Set.prototype.reomve = function (value) {
// 1. 判断集合中是否包含该元素
if (!this.has(value)) { return false }
// 2.将元素从属性中删除
delete this.items[value]
return true
}
// ② 获取集合中所有的值
Set.prototype.values=function(){
return Object.keys(this.item)
}
//③ has 判断是否存在元素
Set.prototype.has = function(value) {
return this.items.hasOwnProperty(value)
}
// ④ add() 添加元素
Set.prototype.add = function(value) {
// 判断是否存在重复元素
if(this.has(value)) return false;
// 存储元素
this.items[value] = value
// 返回当前集合内容
return this.items
}
//⑤ clear() 清空集合
Set.prototype.clear = function() {
this.items = {}
}
// ⑥ size() 判断集合内元素个数
Set.prototype.size = function() {
return Object.keys(this.items).length
}
}
}
集合常见操作
// 并集
// 求两个集合的并集
var unionSet=setA.union(setB)
alter(unionSet.values())
// 求两个集合的交集
var intersectionSet=setA.intersection(setB)
alter(intersectionSet.values())
// 求两个集合的差集
var differenceSet=setA.difference(setB)
alter(differenceSet.values())
//判断子集
alter(setA.subset(setB))
补充
Object.keys()
Object.keys() 静态方法返回一个由给定对象自身的可枚举的字符串键属性名组成的数组
const object1 = {
a: 'somestring',
b: 42,
c: false,
};
console.log(Object.keys(object1));
// 输出: Array ["a", "b", "c"] 返回对象object1中的所有属性名组成的数组