UNPKG

locutus

Version:

Locutus other languages' standard libraries to JavaScript for fun and educational purposes

32 lines (31 loc) 1.06 kB
export function array_rand(array, num) { // discuss at: https://locutus.io/php/array_rand/ // original by: Waldo Malqui Silva (https://waldo.malqui.info) // reimplemented by: Rafał Kukawski // example 1: array_rand( ['Kevin'], 1 ) // returns 1: '0' // By using Object.keys we support both, arrays and objects // which phpjs wants to support const keys = Object.keys(array); if (typeof num === 'undefined' || num === null) { num = 1; } else { num = +num; } if (isNaN(num) || num < 1 || num > keys.length) { return null; } // shuffle the array of keys for (let i = keys.length - 1; i > 0; i--) { const j = Math.floor(Math.random() * (i + 1)); // 0 ≤ j ≤ i const tmp = keys[j]; const current = keys[i]; if (tmp === undefined || current === undefined) { return null; } keys[j] = current; keys[i] = tmp; } return num === 1 ? (keys[0] ?? null) : keys.slice(0, num); }