迄今为止,我们已经学习了数组(列表)、栈、队列和链表(及其变种)等顺序数据结构。
这一节我们讲讲集合。集合的定义是由一组无序且唯一(即不能重复)的项组成的。不包含任何元素的集合就叫做空集。上高中那会,我们都接触过集合,其中一些概念比如交集、并集、差集等等。
ECMAScript6也实现了集合这种数据结构——Set类。而我们用ECMAScript5来实现。也可以为看Set时做铺垫。
首先,集合Set类的骨架是
function Set(){
var items = {};
}
与之前不同的是,这里使用的是对象而不是数组来表示集合。因为对象和集合有一个共同点,Javascript不允许一个键指向两个不同的属性,也保证了集合里的元素都是唯一的。
集合Set类中有一些可用的方法:
add(value):向集合添加一个新的项。
remove(value):从集合中移除一个值。
has(value):判断集合中是否存在某个值。
clear():移除集合中所有的项。
size():返回集合中所包含元素的数量。
values():返回一个包含集合中所有值的数组。
实现起来借助对象也是非常easy的:
this.has = function(value){
return items.hadOwnProperty(value); //return value in items;
};
this.add = function(value){
if(!this.has(value)){
items[value] = value;
return true;
}
return