I have a cmyk array which is :
cmykColor = [[0,1,0,1],[0,0,1,1],[0,0,0,1]]
and the other one is the number array which is:
arrGeo = [4,2,1]
I want to have an array which has iterative cmyk respect to arrGeo numbers which means:
cmykArray = [ [0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,], [0,0,1,1,0,0,1,1], [0,0,0,1] ]
and this is my code to make it :
for (let i = 0; i < arrGeo.length; i++) {
var cmyk = [];
var cmykArray = [];
for (let j = 0; j < arrGeo[i].length; j++) {
for (let k = 0; k < 4; k++) {
cmyk = cmyk.concat(cmykColor[i][k]);
console.log(hex[i]);
}
}
cmykArr.push(cmyk);
}
Advertisement
Answer
You could map with another loop for the wanted count.
const
cmykColor = [[0, 1, 0, 1], [0, 0, 1, 1], [0, 0, 0, 1]],
arrGeo = [4, 2, 1],
result = cmykColor.map((a, i) => {
let c = arrGeo[i],
t = [];
while (c--) t.push(...a);
return t;
});
console.log(result);.as-console-wrapper { max-height: 100% !important; top: 0; }