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);...