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