Skip to content

Instantly share code, notes, and snippets.

@dhargitai
Created March 2, 2020 13:45
Show Gist options
  • Save dhargitai/153f7812a0cc06306be5bc5f9fde42ec to your computer and use it in GitHub Desktop.
Save dhargitai/153f7812a0cc06306be5bc5f9fde42ec to your computer and use it in GitHub Desktop.
My attempt to write an anagram finder function in Node by using functional programming paradigms.
const words = require('an-array-of-english-words');
const findAnagrams = (word, allWords) => {
const letters = word.split('')
const getNumberOfLetters = anArray => anArray.reduce((acc, letter) => ({
...acc,
[letter]: acc[letter] ? acc[letter] + 1 : 1,
}), {});
const letterNumbers = getNumberOfLetters(letters);
return allWords
.filter(someWord => someWord.length === word.length)
.filter(someWord => {
const someWordLetterNumbers = getNumberOfLetters(someWord.split(''));
return Object.keys(someWordLetterNumbers).every(someLetter => someWordLetterNumbers[someLetter] === letterNumbers[someLetter] && someWord !== word);
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment