Spoken Time Code Challenge

by jacobwsmith

JavaScript

console.clear();

const translateTime = (time) => {
  const words = ['oh', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten', 'eleven', 'twelve', 'thirteen', 'fourteen', 'fifteen', 'sixteen', 'seventeen', 'eighteen', 'nineteen'];
  const wordsLarge = ['', '', 'twenty', 'thirty', 'fourty', 'fifty'];
  const arr = time.split(":");
  return "It's " + arr.map((item, index) => {
    if (index === 0) {
      // Hour
    	if(item === '00'){
      	return words[12];
			} 
      if(+item > 12){
      	return words[+item - 12];
      } 
      if(+item < 20){
				return words[+item];
			}
			return wordsLarge[item[0]] + words[item[1]];
    } else {
    	// Minute
      if(item === '00'){
      	return;
      }
      if(item[0] === '0'){
      	return words[item[0]] + ' ' + words[item[1]] + ' ';
      }
      if(item[1] === '0'){
      	return wordsLarge[item[0]] + ' ';
      }
      if(+item < 20 && +item > 9){
      	return words[item] + ' ';
      }
      return wordsLarge[item[0]] + ' ' + words[item[1]] + ' ';
    }
  }).join(' ') + (arr[0] < 12 ? 'am' : 'pm');
}

/// TESTING

function assertEquals(actual, expected) {
  if (actual === expected) {
    console.log('PASSED')
  } else {
    console.log(`FAILED: expected \"${expected}\" but got \"${actual}\"`)
  }
}

assertEquals(translateTime("00:00"), "It's twelve am")
assertEquals(translateTime("01:30"), "It's one thirty am")
assertEquals(translateTime("12:05"), "It's twelve oh five pm")
assertEquals(translateTime("14:01"), "It's two oh one pm")
assertEquals(translateTime("20:29"), "It's eight twenty nine pm")
assertEquals(translateTime("21:00"), "It's nine pm")