mirror of
https://github.com/whoisclebs/lodash.git
synced 2026-02-04 08:57:49 +00:00
29 lines
680 B
JavaScript
29 lines
680 B
JavaScript
import baseRandom from './baseRandom.js'
|
|
|
|
/**
|
|
* A specialized version of `shuffle` which mutates and sets the size of `array`.
|
|
*
|
|
* @private
|
|
* @param {Array} array The array to shuffle.
|
|
* @param {number} [size=array.length] The size of `array`.
|
|
* @returns {Array} Returns `array`.
|
|
*/
|
|
function shuffleSelf(array, size) {
|
|
let index = -1
|
|
const length = array.length
|
|
const lastIndex = length - 1
|
|
|
|
size = size === undefined ? length : size
|
|
while (++index < size) {
|
|
const rand = baseRandom(index, lastIndex)
|
|
const value = array[rand]
|
|
|
|
array[rand] = array[index]
|
|
array[index] = value
|
|
}
|
|
array.length = size
|
|
return array
|
|
}
|
|
|
|
export default shuffleSelf
|