<< Back to main

Node.js Anagrams Generator

function anagrams(prefix, word) {
  if (word === "") return [prefix];
  let words = [];
  for (let i = 0; i < word.length; i++) {
    words = [
      ...words,
      ...anagrams(prefix + word[i], word.slice(0, i) + word.slice(i + 1)),
    ];
  }
  return words;
}

Usage

console.log(anagrams("", "east"));
/*
[
  'east', 'eats', 'esat',
  'esta', 'etas', 'etsa',
  'aest', 'aets', 'aset',
  'aste', 'ates', 'atse',
  'seat', 'seta', 'saet',
  'sate', 'stea', 'stae',
  'teas', 'tesa', 'taes',
  'tase', 'tsea', 'tsae'
]
*/