I have the following array:
const colors = ['#54AAED', '#7BEA6B', '#f8b653', '#ff5584']
What I'm trying to build is a function that would return color based on parameter group and index. for instance:
function groupColor(i, group) {}
The function should return:
groupColor(0, true); output <== '#54AAED'
groupColor(1, true); output <== '#54AAED' Minus 10% RGB
If group, so Index 0 is #54AAED 1 is #54AAED minues 10% opacity,
Index 2 is #7BEA6B Index 3 is #7BEA6B minus 10% opacity, and so on... So Far I've did:
function hexToRgb(hex, opacity) {
return 'rgba(' + (hex = hex.replace('#', '')).match(new RegExp('(.{' + hex.length/3 + '})', 'g')).map(function(l) { return parseInt(hex.length%2 ? l+l : l, 16) }).concat(opacity||1).join(',') + ')';
}
function generateColor({ i, group }) {
if (group) {
console.log('should group...')
}
const isEven = i % 2 === 0
console.log('index', hexToRgb(palette[i], 0.9))
return hexToRgb(palette[i])
}
What I was thinking to do is check if index is odd, and by jumps of 2 indexes group, if bool is true.. But I'm kinda stuck here... not sure how to group by intervals of 2, and first should aim for full color, second take same color and set the opacity to 0.9...
Example Usage:
const colors = ['#54AAED', '#7BEA6B', '#f8b653', '#ff5584']
const groupMe = ['one', 'two', 'three', 'four']
groupMe.map(entry => {
return generateColor(i, true)
})
// expected output
'one' <== '#54AAED' opacity 1
'two' <== '#54AAED' opacity 0.9
'three' <== '#7BEA6B' opacity 1
'four' <== '#7BEA6b' opacity 0.9
and so on...