js集合set类的实现

前端之家收集整理的这篇文章主要介绍了js集合set类的实现前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
js集合set类的实现
.dataStore =.add = add; .remove = remove;删除元素 .size = size; .union = union; .contains = contains; .intersect = intersect; .subset = subset; .difference = difference; .show = show;显示出来 <span style="color: #0000ff;">function<span style="color: #000000;"> add(data) {
<span style="color: #0000ff;">if
(<span style="color: #0000ff;">this
.dataStore.indexOf(data) < 0<span style="color: #000000;">) {
<span style="color: #0000ff;">this
<span style="color: #000000;">.dataStore.push(data);
<span style="color: #0000ff;">return
<span style="color: #0000ff;">true
<span style="color: #000000;">;
}
<span style="color: #0000ff;">else
<span style="color: #000000;"> {
<span style="color: #0000ff;">return
<span style="color: #0000ff;">false
<span style="color: #000000;">;
}
}

<span style="color: #0000ff;">function<span style="color: #000000;"> remove(data) {
<span style="color: #0000ff;">var pos = <span style="color: #0000ff;">this<span style="color: #000000;">.dataStore.indexOf(data);
<span style="color: #0000ff;">if (pos > -1<span style="color: #000000;">) {
<span style="color: #0000ff;">this.dataStore.splice(pos,1<span style="color: #000000;">);
<span style="color: #0000ff;">return <span style="color: #0000ff;">true<span style="color: #000000;">;
}
<span style="color: #0000ff;">else<span style="color: #000000;"> {
<span style="color: #0000ff;">return <span style="color: #0000ff;">false<span style="color: #000000;">;
}
}

<span style="color: #0000ff;">function<span style="color: #000000;"> size() {
<span style="color: #0000ff;">return <span style="color: #0000ff;">this<span style="color: #000000;">.dataStore.length;
}

<span style="color: #0000ff;">function<span style="color: #000000;"> show() {
<span style="color: #0000ff;">return "[" + <span style="color: #0000ff;">this.dataStore + "]"<span style="color: #000000;">;
}

<span style="color: #0000ff;">function<span style="color: #000000;"> contains(data) {
<span style="color: #0000ff;">if (<span style="color: #0000ff;">this.dataStore.indexOf(data) > -1<span style="color: #000000;">) {
<span style="color: #0000ff;">return <span style="color: #0000ff;">true<span style="color: #000000;">;
}
<span style="color: #0000ff;">else<span style="color: #000000;"> {
<span style="color: #0000ff;">return <span style="color: #0000ff;">false<span style="color: #000000;">;
}
}

<span style="color: #0000ff;">function<span style="color: #000000;"> union(set) {
<span style="color: #0000ff;">var tempSet = <span style="color: #0000ff;">new<span style="color: #000000;"> Set();
<span style="color: #0000ff;">for (<span style="color: #0000ff;">var i = 0; i < <span style="color: #0000ff;">this.dataStore.length; ++<span style="color: #000000;">i) {
tempSet.add(<span style="color: #0000ff;">this<span style="color: #000000;">.dataStore[i]);
}
<span style="color: #0000ff;">for (<span style="color: #0000ff;">var i = 0; i < set.dataStore.length; ++<span style="color: #000000;">i) {
<span style="color: #0000ff;">if (!<span style="color: #000000;">tempSet.contains(set.dataStore[i])) {
tempSet.dataStore.push(set.dataStore[i]);
}
}
<span style="color: #0000ff;">return<span style="color: #000000;"> tempSet;
}

<span style="color: #0000ff;">function<span style="color: #000000;"> intersect(set) {
<span style="color: #0000ff;">var tempSet = <span style="color: #0000ff;">new<span style="color: #000000;"> Set();
<span style="color: #0000ff;">for (<span style="color: #0000ff;">var i = 0; i < <span style="color: #0000ff;">this.dataStore.length; ++<span style="color: #000000;">i) {
<span style="color: #0000ff;">if (set.contains(<span style="color: #0000ff;">this<span style="color: #000000;">.dataStore[i])) {
tempSet.add(<span style="color: #0000ff;">this<span style="color: #000000;">.dataStore[i]);
}
}
<span style="color: #0000ff;">return<span style="color: #000000;"> tempSet;
}

<span style="color: #0000ff;">function<span style="color: #000000;"> subset(set) {
<span style="color: #0000ff;">if (<span style="color: #0000ff;">this.size() ><span style="color: #000000;"> set.size()) {
<span style="color: #0000ff;">return <span style="color: #0000ff;">false<span style="color: #000000;">;
}
<span style="color: #0000ff;">else<span style="color: #000000;"> {
<span style="color: #0000ff;">for(<span style="color: #0000ff;">var member <span style="color: #0000ff;">in <span style="color: #0000ff;">this<span style="color: #000000;">.dataStore) {
<span style="color: #0000ff;">if (!<span style="color: #000000;">set.contains(member)) {
<span style="color: #0000ff;">return <span style="color: #0000ff;">false<span style="color: #000000;">;
}
}
}
<span style="color: #0000ff;">return <span style="color: #0000ff;">true<span style="color: #000000;">;
}

<span style="color: #0000ff;">function<span style="color: #000000;"> difference(set) {
<span style="color: #0000ff;">var tempSet = <span style="color: #0000ff;">new<span style="color: #000000;"> Set();
<span style="color: #0000ff;">for (<span style="color: #0000ff;">var i = 0; i < <span style="color: #0000ff;">this.dataStore.length; ++<span style="color: #000000;">i) {
<span style="color: #0000ff;">if (!set.contains(<span style="color: #0000ff;">this<span style="color: #000000;">.dataStore[i])) {
tempSet.add(<span style="color: #0000ff;">this<span style="color: #000000;">.dataStore[i]);
}
}
<span style="color: #0000ff;">return<span style="color: #000000;"> tempSet;
}

<span style="color: #008000;">/<span style="color: #008000;">测试例子:求补集。属于集合cis,不属于集合it<span style="color: #008000;">/

<span style="color: #0000ff;">var cis = <span style="color: #0000ff;">new<span style="color: #000000;"> Set();
<span style="color: #0000ff;">var it = <span style="color: #0000ff;">new<span style="color: #000000;"> Set();
cis.add("Clayton"<span style="color: #000000;">);
cis.add("Jennifer"<span style="color: #000000;">);
cis.add("Danny"<span style="color: #000000;">);
it.add("Bryan"<span style="color: #000000;">);
it.add("Clayton"<span style="color: #000000;">);
it.add("Jennifer"<span style="color: #000000;">);
<span style="color: #0000ff;">var diff = <span style="color: #0000ff;">new<span style="color: #000000;"> Set();
diff =<span style="color: #000000;"> cis.difference(it);
console.log(cis.show() + " difference " + it.show() + " -> " + diff.show());

 

猜你在找的JavaScript相关文章