/ Development Tools

JavaScript algorithms I commonly use

Arrays:

1. Randomly Select X items from an array with no duplicates.

So let's say I have a row of barrels I want to randomly blow up, and they are represented in a JavaScript array. Here's how I do it:
 
var barrels = new Array('1','2','4','5','6','7','8','9','10');
var numToSelect = 4;
barrels.sort( function() { return 0.5 - Math.random() } );  // ["5", "1", "6", "4", "8", "7", "10", "2", "9"]
barrels.sort( function() { return 0.5 - Math.random() } ); // ["5", "4", "8", "9", "1", "7", "6", "10", "2"]
var selectedBarrels = barrels.splice(0,numToSelect);  // ["1", "5", "7", "10"]

How sort() normally works is that it loops through the array and compares 2 numbers at a time moving them if the anonymous function given evaluates as true; Instead we're replacing that sort function with one which will randomly return true or false. This works because Math.random() returns a value between 0.0 and 0.9999. So 0.5 - 0.6 is -0.09999, or negative, or boolean false in JavaScript. And 0.5 - 0.1 is 0.4 or positive or boolean true in JavaScript. So essentially it will randomly sort the array. Then we splice the first X elements of the newly sorted array and we are left with X randomly selected barrels.

 

 


Corey Snyder

Corey Snyder

Senior Front-End Engineer for Aver Inc.. I have independently developed & released multiple video-games. I play Ice Hockey, I race FPV Drones, and I love my Subaru WRX STI.

Read More