Challenge - All in One Imperative

by jacobwsmith

JavaScript

'use strict';

/*
 *	All In One Solution - Imperative Style
 */
function processChallenge(testArr) {
	var obj = {};
  var arr = testArr.reduce(function(prev, next, index){
  	var str = next.charAt(0).toUpperCase() + next.slice(1).toLowerCase();
    if(!obj.hasOwnProperty(str)){
    	obj[str] = [index];
    	prev.push(str);
    } else {
    	obj[str].push(index);
    }
    return prev;
  }, []).sort().join(', ');
  return {
  	question1: obj,
    question2: arr
  }
}

//////

/*
 * Testing
 */
var testArr = ['Nick', 'jake', 'RAY', 'Kate', 'Nick', 'Jeremy', 'nick', 'AMOL', 'rAY', 'VIANNEY', 'Shilpika', 'nick', 'THOMAS', 'tom', 'james', 'JERM', 'amOl', 'kate'];
var start = performance.now();
var result = processChallenge(testArr);
var end = performance.now() - start;
console.log(result.question1);
console.log(result.question2);
console.log('elapsed time: ' + end);