averageColor - Options
used for job application
by Jared Meadows
JavaScript
console.clear();
console.log("output: ", averageColor("abcdefFF", "dddddd00"));
//console.log("output: ", averageColor("abcd", "dddd"));
//console.log("easy option: ", averageColor("444444", "000000"));
/**
* take the average color between 2 colors and return the result
*
* @param {string} color1
* 6 digit hexidecimal string representing 1st color to be averaged
* @param {string} color2
* 6 digit hexidecimal string representing 2nd color to be averaged
*/
function averageColor(color1, color2) {
//************
//* OPTION 1 *
//************
//console.time("regex");
var hexColorA = color1.match(/../g);
var hexColorB = color2.match(/../g);
//console.log('array', hexColorA);
var tempColor;
var retColor = '';
for(var i=0;i<hexColorA.length;i++) {
tempColor = Math.round(
(parseInt(hexColorA[i], 16) + parseInt(hexColorB[i], 16)) / 2
,0);
retColor += ("0"+tempColor.toString(16)).slice(-2);
}
console.log("regex option: ", retColor);
//console.timeEnd("regex");
//************
//* OPTION 2 *
//************
//console.time("looper");
var tempColorX;
var retColor2 = '';
for (var j=0;j<color1.length;j+=2) {
tempColorX = Math.round(
(parseInt(color1.slice(j,j+2), 16) + parseInt(color2.slice(j,j+2), 16)) / 2
,0);
retColor2 += ("0"+tempColorX.toString(16)).slice(-2);
}
console.log("loopey option: ", retColor2);
//console.timeEnd("looper");
//************
//* OPTION 3 *
//************
//console.time("brute force");
var decColor1 = new Array(3);
decColor1[0] = parseInt(color1.slice(0,2), 16); //convert hex to integer
decColor1[1] = parseInt(color1.slice(2,4), 16); //convert hex to integer
decColor1[2] = parseInt(color1.slice(4,6), 16); //convert hex to integer
var decColor2 = new Array(3);
decColor2[0] = parseInt(color2.slice(0,2), 16); //convert hex to integer
decColor2[1] = parseInt(color2.slice(2,4), 16); //convert hex to integer
decColor2[2] = parseInt(color2.slice(4,6), 16);...