Skip to content

js-util/array-shuffle

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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;

About

Given an array, shuffle its content randomly. Note that the original array is not affected (Fisher–Yates method)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published