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))