Challenge - All in One Declarative

by jacobwsmith

JavaScript

'use strict';

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

//////

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