创建
// 数据内部的对象必须包含属性id
var Set = function () {
// 以this.开头的都是对象公有的属性或函数
this.items = new Array(); // 内部实际是一个Array
this.size = 0; // Array的大小
// 添加元素,若id已存在,则跳过
this.add = function (value) {
if (value.id == undefined) {
console.log("element id must be included.");
return
}
if (!this.contains(value.id)) {
this.items.push(value);
this.size++;
}
return this;
}
// 判断是否包含某元素
this.contains = function (id) {
for (var key in this.items) {
if (this.items[key].id === id) {
return true;
}
}
return false;
}
// 根据id获取元素
this.get = function (id) {
for (var key in this.items) {
if (this.items[key].id === id) {
return this.items[key];
}
}
return null;
}
// 根据id移除元素
this.remove = function (id) {
for (var key in this.items) {
if (this.items[key].id === id) {
delete this.items[key];
this.size--;
}
}
}
}
使用
// 创建一个符合上面的数据结构存储规则的类
var User = function (id, name) {
this.id = id; // 属性id必须存在
this.name = name;
}
var set = new Set();
set.add(new User(1, 'ndd'));
set.add(new User(2, 'ndd'));
set.add(new User(2, 'ndd')); // 这个对象将插入失败,因为id=2已存在
console.log(set);
console.log(set.size);
console.log(set.get(1));
set.remove(1); // 删除id=1的对象
console.log(set);
console.log(set.size);
console.log(set.get(1));