@js-util/array-shuffle

1.0.3 • Public • Published

fetch-nested-value

Given an array, shuffles a cloned copy, and returns it. (Fisher–Yates method)

This does not aim for true perfect randomness. Just to be good enough and fast

npm install

npm install --save @js-util/array-shuffle

Example usage

// Importing the module
const arrayShuffle = require("@js-util/array-shuffle");

// Example array to shuffle
const array = [1,2,3,4];

// Shuffle the array
let shuffled = arrayShuffle( array ); 

Its code

/**
 * Given an array, shuffle its content randomly.
 * Note that the original array is not affected
 * 
 * This does the : Fisher–Yates shuffle underneath the hood
 * https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle#The_modern_algorithm
 * 
 * This does not aim for true perfect randomness. Just to be good enough and fast
 * 
 * @param {Array<*>} array 
 * 
 * @return {Array<*>} shuffled array
 */
function arrayShuffle(array) {
	// Clone the array
	array = arrays.slice(0);

	// Shuffle it
	for (let i = array.length - 1; i > 0; i--) {
		const j = Math.floor(Math.random() * (i + 1));

		//
		// Note that the below code is equivalent to
		//
		// ```
		// var temp = array[i];
		// array[i] = array[j];
		// array[j] = temp;
		// ```
		//
		[array[i], array[j]] = [array[j], array[i]];
	}

	// Return the shuffled array
	return array;
}

// Export the function
module.exports = arrayShuffle;

Package Sidebar

Install

npm i @js-util/array-shuffle

Weekly Downloads

5

Version

1.0.3

License

MIT

Unpacked Size

4.11 kB

Total Files

5

Last publish

Collaborators

  • picocreator