Randomly select defined number of items from an array

No-Library (pure JS), HTML, CSS, JavaScript

by Sree K

JavaScript

function getRandomItemsFrom(arr, numberOfItems) {
    if ( arr instanceof Array === false || arr.length === 0 ) return false;
    if ( numberOfItems === undefined || numberOfItems <= 0 ) return false;
    
    var results     = [],
        usedIndexes = {},
        randomIndex;

    while ( results.length !== numberOfItems ) {
        randomIndex = Math.floor(Math.random() * arr.length);

        if ( usedIndexes.hasOwnProperty(randomIndex) === false ) {
            usedIndexes[randomIndex] = true;
            results.push(arr[randomIndex]);
        }
    }
    
    return results;
}


var alphabet = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'];
console.log('10 items: ' + getRandomItemsFrom(alphabet, 10));
console.log('1 item: '   + getRandomItemsFrom(alphabet, 1));
console.log('20 items: ' + getRandomItemsFrom(alphabet, 20));
console.log('6 items: '  + getRandomItemsFrom(alphabet, 6));
console.log('4 items: '  + getRandomItemsFrom(alphabet, 4));
console.log('7 items: '  + getRandomItemsFrom(alphabet, 7));
console.log('12 items: ' + getRandomItemsFrom(alphabet, 12));

document.body.innerHTML = "<div>" + getRandomItemsFrom(alphabet, 10).join("</div><div>") + "</div>";