Repository URL to install this package:
|
Version:
6.0.4 ▾
|
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var is_1 = require("../is");
// @TODO need to finish `copy/`
/**
* Creates an array of shuffled values, using a version of the
* [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).
*
* @since 0.1.0
* @category Array
*
* @param {Array} array The array to shuffle.
* @return {Array} Returns the new shuffled array.
*
* {@link https://github.com/lodash/lodash/blob/master/shuffle.js lodash-shuffle}
* @see {@link lodash-shuffle}
*
* @example
*
* shuffle([1, 2, 3, 4])
* //=> [4, 1, 3, 2]
*
*/
function shuffle(array) {
if (process.env.NODE_ENV !== 'production') {
if (is_1.isNil(array)) {
console.warn('do not shuffle an array that is nil', array);
return [];
}
}
var length = array.length;
var index = -1;
var lastIndex = length - 1;
// @todo @@perf?
// const result = copyArray(array)
var result = array.slice();
while (++index < length) {
var rand = index + Math.floor(Math.random() * (lastIndex - index + 1));
var value = result[rand];
result[rand] = result[index];
result[index] = value;
}
return result;
}
exports.default = shuffle;
//# sourceMappingURL=shuffle.js.map