From f0982a01a374741048ccac2e70fc5ce41e0e02e8 Mon Sep 17 00:00:00 2001 From: Jussi Saurio Date: Tue, 12 Dec 2017 22:23:44 +0200 Subject: [PATCH] Make 'Anagrams of string' fully functional Gets rid of mutable `.push` (and param reassignment) inside `.map` --- snippets/anagrams-of-string-(with-duplicates).md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/snippets/anagrams-of-string-(with-duplicates).md b/snippets/anagrams-of-string-(with-duplicates).md index 0d24e51cb..090a75b9d 100644 --- a/snippets/anagrams-of-string-(with-duplicates).md +++ b/snippets/anagrams-of-string-(with-duplicates).md @@ -9,8 +9,7 @@ Base cases are for string `length` equal to `2` or `1`. const anagrams = str => { if(str.length <= 2) return str.length === 2 ? [str, str[1] + str[0]] : [str]; return str.split('').reduce( (acc, letter, i) => { - anagrams(str.slice(0, i) + str.slice(i + 1)).map( val => acc.push(letter + val) ); - return acc; + return acc.concat(anagrams(str.slice(0, i) + str.slice(i + 1)).map( val => letter + val )); }, []); } // anagrams('abc') -> ['abc','acb','bac','bca','cab','cba']