iberck
1/27/2018 - 12:08 AM

Obtiene subarrays de un array

Obtiene subarrays de un array, los elementos los toma aleatoriamente

var options = ["P1_1", "P1_2", "P1_3", "P1_4", "P1_5", "P1_6", "P1_7", "P1_8", "P1_9", "P1_10", "P1_11", "P1_12"];
var superArray = spliteArrayRan(options, 5);
console.log(superArray);

// parte el array en subarrays de tamaño len, los elementos los toma de manera aleatoria.
// Retorna un array que contiene los arrays partidos.
function spliteArrayRan(array, len) {
    var superArray = [];
    for(var i=0; array.length>0; i++) {
        var subarray = extractSubArrayRan(array, 5);    
        superArray[i] = subarray;
    }
    return superArray;
}

// obtiene un subarray de tamaño len del array, si no hay elementos suficientes obtiene 
// los elementos existentes.
// array es modificado dentro de la función
function extractSubArrayRan(array, len) {
    // hay elementos suficientes para la extracción
    var subarray = [];
    var length = array.length>=len?len:array.length;
    for(var i=0; i<length; i++) {
        var idx = Math.floor(Math.random()*array.length);
        subarray[i] = array[idx]; // P1_3
        array.splice(idx, 1); // removes P1_3        
    }
    return subarray;
}