import copyArray from './.internal/copyArray.js' /** * 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. * @returns {Array} Returns the new shuffled array. * @example * * shuffle([1, 2, 3, 4]) * // => [4, 1, 3, 2] */ function shuffle(array) { const length = array == null ? 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 } export default shuffle