Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
chain-able-deps / dist / array / shuffle.js
Size: Mime:
"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