Great article, and good interview question. Good work, keep it up! :)
Just wanted to share my approach to this:
function groupAnagrams(anagrams) { const wordGroups = anagrams.reduce((groups, anagram) => { const word = anagram.split('').sort().join(''); if (groups[word]) { groups[word].push(anagram); } else { groups[word] = [anagram]; } return groups; }, {}); return Object.values(wordGroups).map(group => group); }
What do you think about it?
Thank you Wojciech. I love your method. It's very clever and coincise. Works perfectly too.
dev-to-uploads.s3.amazonaws.com/i/...
Do you mind explaining what is going on in the reduce() function probably by commenting the code?
I thought of reducing array of anagrams to an object which keys will be initial words and values arrays of anagrams from these words.
Tried pretty much in the same way
function groupAnagrams(array) { var reducedObject = array.reduce((acc, cur) => { var newcur=cur.split('').sort().join(''); if (!acc[newcur]) { acc[newcur] = [cur] } else { acc[newcur] = [...acc[newcur], cur] } return acc; }, {}); return Object.values(reducedObject); } console.log(groupAnagrams(["eat", "tea", "tan", "ate", "nat", "bat"]));
Are you sure you want to hide this comment? It will become hidden in your post, but will still be visible via the comment's permalink.
Hide child comments as well
Confirm
For further actions, you may consider blocking this person and/or reporting abuse
We're a place where coders share, stay up-to-date and grow their careers.
Great article, and good interview question.
Good work, keep it up! :)
Just wanted to share my approach to this:
What do you think about it?
Thank you Wojciech. I love your method. It's very clever and coincise. Works perfectly too.
dev-to-uploads.s3.amazonaws.com/i/...
Do you mind explaining what is going on in the reduce() function probably by commenting the code?
I thought of reducing array of anagrams to an object which keys will be initial words and values arrays of anagrams from these words.
Tried pretty much in the same way
function groupAnagrams(array) {
var reducedObject = array.reduce((acc, cur) => {
var newcur=cur.split('').sort().join('');
if (!acc[newcur]) {
acc[newcur] = [cur]
} else {
acc[newcur] = [...acc[newcur], cur]
}
return acc;
}, {});
return Object.values(reducedObject);
}
console.log(groupAnagrams(["eat", "tea", "tan", "ate", "nat", "bat"]));