js集合set类的实现
<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());
原文链接:https://www.f2er.com/js/403377.html