tedb
Version:
TypeScript Embedded Database
66 lines • 1.6 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
/**
* Private method used in compareArray.
* @param a
* @param b
* @returns {boolean}
*/
const isEqual = (a, b) => {
if (a.length !== b.length) {
return false;
}
if (a.length === 0) {
return true;
}
const len = a.length;
let equal = true;
for (let i = 0; i < len; i++) {
const x = a[i];
const y = b[i];
equal = equal && (x === y);
}
return equal;
};
/**
* Compare two arrays of equal length, does not deep compare objects in arrays
*
* Example:
* ~~~
* let equal: number = compareArray([1, 2, 3], [1, 2, 3]); // 0
* let greater: number = compareArray(["b"], ["a"]); // 1
* let less: number = compareArray([new Date("1/1/2017")], [new Date()]); // -1
* ~~~
* @param a
* @param b
* @returns {number}
*/
exports.compareArray = (a, b) => {
const array1 = a;
const array2 = b;
for (let i = a.length - 1; i >= 0; i--) {
if (a[i].constructor.name === "Date") {
array1[i] = a[i].getTime();
}
}
for (let i = b.length - 1; i >= 0; i--) {
if (b[i].constructor.name === "Date") {
array2[i] = b[i].getTime();
}
}
const aStr = array1.toString();
const bStr = array2.toString();
if (isEqual(array1, array2)) {
return 0;
}
else if (aStr < bStr) {
return -1;
}
else if (aStr > bStr) {
return 1;
}
else {
throw new Error("Values cannot be compared");
}
};
//# sourceMappingURL=compareArray.js.map