Combined Different Array with Fixed Length

Issue

If my Array1 is

Array1 = [1,2,3,4,5,6,7,8,9,10] 

the Result should be the same as Combined_Array= [1,2,3,4,5,6,7,8,9,10]

if i got

Array2=[11,12,13,14,15,16,17,18,19,20]

the Resut should be Combined_Array =[1,2,3,4,5,11,12,13,14,15]

and if again i got

Array3=[21,22,23,24,25,26,27,28,19,30]

The Combined_array = [1,2,3,11,12,13,21,22,23,24]

and so on , Doesnt matter how much Array’s i want that it should give me a Combined_Array from all the different Array with Fixed Length

Need a Function to make this work .

Solution

You could take a closure over the collected arrays and retuen an array of the parts which are difined by the count of arrays.

const
    getCombined = (a) => {
        const allArrays = [];

        return (b => {
            allArrays.push(b);
            let i = 0,
                p = Math.floor(10 / allArrays.length),
                result = [];

            while (i < allArrays.length) result.push(...allArrays[i++].slice(0, p));
            while (result.length < 10) result.push(allArrays[allArrays.length - 1][p++]);
            return result;
        });
    };

var c = [],
    add = getCombined(c);

c = add([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
console.log(...c); // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

c = add([11, 12, 13, 14, 15, 16, 17, 18, 19, 20]);
console.log(...c); // [1, 2, 3, 4, 5, 11, 12, 13, 14, 15]

c = add([21, 22, 23, 24, 25, 26, 27, 28, 29, 30]);
console.log(...c); // [1, 2, 3, 11, 12, 13, 21, 22, 23, 24]

Answered By – Nina Scholz

This Answer collected from stackoverflow, is licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0

Leave a Reply

(*) Required, Your email will not be published