Add values iterator in InstanceSet
This commit is contained in:
1 parent
15437361e1
commit
b01f3d394e
1 file changed
+34
-30
+34
-30
@@ -36,14 +36,14 @@ class InstanceSet {
|
|||||||
for (let inst of this.set) {
|
for (let inst of this.set) {
|
||||||
let match = true;
|
let match = true;
|
||||||
for (let k in instance) {
|
for (let k in instance) {
|
||||||
if (inst[k] !== instance[k]) {
|
if (inst[k] !== instance[k]) {
|
||||||
match = false;
|
match = false;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (match)
|
if (match)
|
||||||
res.push(inst);
|
res.push(inst);
|
||||||
}
|
}
|
||||||
|
|
||||||
res.sort(function(a, b) {
|
res.sort(function(a, b) {
|
||||||
@@ -51,20 +51,20 @@ class InstanceSet {
|
|||||||
let keysB = Object.keys(b);
|
let keysB = Object.keys(b);
|
||||||
|
|
||||||
if (keysA.length != keysB.length)
|
if (keysA.length != keysB.length)
|
||||||
return keysB.length - keysA.length;
|
return keysB.length - keysA.length;
|
||||||
|
|
||||||
keysA.sort();
|
keysA.sort();
|
||||||
keysB.sort();
|
keysB.sort();
|
||||||
|
|
||||||
for (let i = 0; i < keysA.length; ++ i) {
|
for (let i = 0; i < keysA.length; ++ i) {
|
||||||
if (keysA[i] > keysB[i])
|
if (keysA[i] > keysB[i])
|
||||||
return 1;
|
return 1;
|
||||||
else if (keysA[i] < keysB[i])
|
else if (keysA[i] < keysB[i])
|
||||||
return -1;
|
return -1;
|
||||||
else if (a[keysA[i]] > b[keysB[i]])
|
else if (a[keysA[i]] > b[keysB[i]])
|
||||||
return 1;
|
return 1;
|
||||||
else if (a[keysA[i]] < b[keysB[i]])
|
else if (a[keysA[i]] < b[keysB[i]])
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@@ -75,18 +75,18 @@ class InstanceSet {
|
|||||||
|
|
||||||
subset(instance) {
|
subset(instance) {
|
||||||
let res = [];
|
let res = [];
|
||||||
|
|
||||||
for (let inst of this.set) {
|
for (let inst of this.set) {
|
||||||
let match = true;
|
let match = true;
|
||||||
for (let k in inst) {
|
for (let k in inst) {
|
||||||
if (inst[k] !== instance[k]) {
|
if (inst[k] !== instance[k]) {
|
||||||
match = false;
|
match = false;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (match)
|
if (match)
|
||||||
res.push(inst);
|
res.push(inst);
|
||||||
}
|
}
|
||||||
|
|
||||||
res.sort(function(a, b) {
|
res.sort(function(a, b) {
|
||||||
@@ -94,31 +94,35 @@ class InstanceSet {
|
|||||||
let keysB = Object.keys(b);
|
let keysB = Object.keys(b);
|
||||||
|
|
||||||
if (keysA.length != keysB.length)
|
if (keysA.length != keysB.length)
|
||||||
return keysA.length - keysB.length;
|
return keysA.length - keysB.length;
|
||||||
|
|
||||||
keysA.sort();
|
keysA.sort();
|
||||||
keysB.sort();
|
keysB.sort();
|
||||||
|
|
||||||
for (let i = 0; i < keysA.length; ++ i) {
|
for (let i = 0; i < keysA.length; ++ i) {
|
||||||
if (keysA[i] > keysB[i])
|
if (keysA[i] > keysB[i])
|
||||||
return 1;
|
return 1;
|
||||||
else if (keysA[i] < keysB[i])
|
else if (keysA[i] < keysB[i])
|
||||||
return -1;
|
return -1;
|
||||||
else if (a[keysA[i]] > b[keysB[i]])
|
else if (a[keysA[i]] > b[keysB[i]])
|
||||||
return 1;
|
return 1;
|
||||||
else if (a[keysA[i]] < b[keysB[i]])
|
else if (a[keysA[i]] < b[keysB[i]])
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
});
|
});
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
forEach(callback) {
|
forEach(callback) {
|
||||||
return this.set.forEach(callback);
|
return this.set.forEach(callback);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
values() {
|
||||||
|
return this.set.values();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = InstanceSet;
|
module.exports = InstanceSet;
|
||||||
Reference in new issue
Block a user