Прежде всего, ваша функция sortString
может быть «упрощена» до следующего:
function sortString(str) {
return Array.from(str) // Converts string to array of characters
.sort() // Sorts them
.join(''); // Creates string again
}
Фактическая логика группировки анаграмм может фактически выполняться несколькими способами.То, что вы уже сделали, также допустимо, но это код в стиле «C».Ниже приведен один из таких способов использования доступных функций JS:
function anagramsArray() {
let arr = ["cab", "cz", "abc", "bca", "zc"];
// Following reduction creates a Map from 'sorted string' to list of
// strings that result in same sorted string. i.e. list of anagrams
const resultObj = arr.reduce((accumulator, str) => {
const sortedStr = sortString(str);
if(!accumulator[sortedStr]) {
accumulator[sortedStr] = [];
}
accumulator[sortedStr].push(str);
return accumulator;
}, {});
// Following mapping discards the keys in object above,
// and returns the Array of arrays that the user expects.
return Object.keys(resultObj).map(key => resultObj[key]);
}