foop
Version:
interfaces that describe their intentions.
42 lines (39 loc) • 2.78 kB
JavaScript
var isNill = require('../is/nullOrUndefined')
// @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]
*
*/
// module.exports = function shuffle(array) {
// const length = isNill(array) ? 0 : array.length
// if (!length) return []
//
// let index = -1
// const lastIndex = length - 1
// const result = copyArray(array)
//
// while (++index < length) {
// const rand = index + Math.floor(Math.random() * (lastIndex - index + 1))
// const value = result[rand]
// result[rand] = result[index]
// result[index] = value
// }
//
// return result
// }
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2h1ZmZsZS5qcyIsInNvdXJjZXMiOlsic2h1ZmZsZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBpc05pbGwgPSByZXF1aXJlKCcuLi9pcy9udWxsT3JVbmRlZmluZWQnKVxuXG4vLyBAVE9ETyBuZWVkIHRvIGZpbmlzaCBgY29weS9gXG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiBzaHVmZmxlZCB2YWx1ZXMsIHVzaW5nIGEgdmVyc2lvbiBvZiB0aGVcbiAqIFtGaXNoZXItWWF0ZXMgc2h1ZmZsZV0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRmlzaGVyLVlhdGVzX3NodWZmbGUpLlxuICpcbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IEFycmF5XG4gKlxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHNodWZmbGUuXG4gKiBAcmV0dXJuIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IHNodWZmbGVkIGFycmF5LlxuICpcbiAqIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vbG9kYXNoL2xvZGFzaC9ibG9iL21hc3Rlci9zaHVmZmxlLmpzIGxvZGFzaC1zaHVmZmxlfVxuICogQHNlZSB7QGxpbmsgbG9kYXNoLXNodWZmbGV9XG4gKlxuICogQGV4YW1wbGVcbiAqXG4gKiAgIHNodWZmbGUoWzEsIDIsIDMsIDRdKVxuICogICAvLz0+IFs0LCAxLCAzLCAyXVxuICpcbiAqL1xuLy8gbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBzaHVmZmxlKGFycmF5KSB7XG4vLyAgIGNvbnN0IGxlbmd0aCA9IGlzTmlsbChhcnJheSkgPyAwIDogYXJyYXkubGVuZ3RoXG4vLyAgIGlmICghbGVuZ3RoKSByZXR1cm4gW11cbi8vXG4vLyAgIGxldCBpbmRleCA9IC0xXG4vLyAgIGNvbnN0IGxhc3RJbmRleCA9IGxlbmd0aCAtIDFcbi8vICAgY29uc3QgcmVzdWx0ID0gY29weUFycmF5KGFycmF5KVxuLy9cbi8vICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbi8vICAgICBjb25zdCByYW5kID0gaW5kZXggKyBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAobGFzdEluZGV4IC0gaW5kZXggKyAxKSlcbi8vICAgICBjb25zdCB2YWx1ZSA9IHJlc3VsdFtyYW5kXVxuLy8gICAgIHJlc3VsdFtyYW5kXSA9IHJlc3VsdFtpbmRleF1cbi8vICAgICByZXN1bHRbaW5kZXhdID0gdmFsdWVcbi8vICAgfVxuLy9cbi8vICAgcmV0dXJuIHJlc3VsdFxuLy8gfVxuIl0sIm5hbWVzIjpbImNvbnN0Il0sIm1hcHBpbmdzIjoiQUFBQUEsR0FBSyxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsdUJBQXVCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7In0=