Skip to content
Advertisement

JS: How to make a list of the letter case permutations of the first letter of each word in a sentence

I am trying to make a list of all possible letter cases of the first letter of the words in a sentence. I can however not think of a way to do this in code because I have no idea how to check for the permutations

For Example:

Sentence: “A short sentence”

Result: (A Short Sentence, a short sentence, A short sentence, a Short sentence, a short Sentence, A short Sentence, A Short sentence, a Short Sentence);

The order doesn’t matter. A sentence can be any length. NO punctuation in sentences or results is entered.

I know this will require some pc power for longer strings.

Advertisement

Answer

Introducing a concept of recursion with idea that assuming you have a list of a shorter array, you can add a word and a Word to the beginning of each of those to get the “true” list.

var str = "A short sentence"
var arr = str.split(" ")

function lcase(word) {
  return word.substr(0, 1).toLowerCase() + word.substr(1)
}

function ucase(word) {
  return word.substr(0, 1).toUpperCase() + word.substr(1)
}

// lets go
function lista(arr) {
  if (arr.length == 0) {
    return []
  }
  var first = lcase(arr[0]);
  var First = ucase(first)

  if (arr.length == 1) {
    return [first, First];
  }
  var list = lista(arr.slice(1))

  var result = [];
  list.forEach(function(a) {
    result.push(([first].concat(a)).join(" "))
    result.push(([First].concat(a)).join(" "))
  })
  return result;
}
var result = lista(arr)
console.log(result)
User contributions licensed under: CC BY-SA
3 People found this is helpful
Advertisement