JSFiddle - React, Tailwind, and code Playground
by kentaromiura
JavaScript
var input = ['aaab', 'abaa', 'aaba', 'bbaa', 'aba', 'aabb'];
function getHash(string) {
return string.split('').sort().join('')
}
function anagrams(input) {
input = input.map(String)
console.log(input)
var output = []
while (input.length) {
var next = input.shift(),
toRemove = [],
group = [next],
hash = getHash(next)
for (var i = 0, max = input.length; i < max; i++) {
var check = input[i]
if (getHash(check) === hash) {
toRemove.unshift(i)
group.push(check)
}
}
toRemove.forEach(function (i) {
input.splice(i, 1)
})
console.log('>', toRemove, group, input)
output.push(group)
}
return output
}
console.log(anagrams(input))