42 lines
990 B
JavaScript
42 lines
990 B
JavaScript
/**
|
|
* Return an array with the numbers from 0 to n-1, in a random order
|
|
*/
|
|
function getRandomArray (n) {
|
|
var res, next;
|
|
|
|
if (n === 0) { return []; }
|
|
if (n === 1) { return [0]; }
|
|
|
|
res = getRandomArray(n - 1);
|
|
next = Math.floor(Math.random() * n);
|
|
res.splice(next, 0, n - 1); // Add n-1 at a random position in the array
|
|
|
|
return res;
|
|
};
|
|
module.exports.getRandomArray = getRandomArray;
|
|
|
|
|
|
/*
|
|
* Default compareKeys function will work for numbers, strings and dates
|
|
*/
|
|
function defaultCompareKeysFunction (a, b) {
|
|
if (a < b) { return -1; }
|
|
if (a > b) { return 1; }
|
|
if (a === b) { return 0; }
|
|
|
|
var err = new Error("Couldn't compare elements");
|
|
err.a = a;
|
|
err.b = b;
|
|
throw err;
|
|
}
|
|
module.exports.defaultCompareKeysFunction = defaultCompareKeysFunction;
|
|
|
|
|
|
/**
|
|
* Check whether two values are equal (used in non-unique deletion)
|
|
*/
|
|
function defaultCheckValueEquality (a, b) {
|
|
return a === b;
|
|
}
|
|
module.exports.defaultCheckValueEquality = defaultCheckValueEquality;
|