Задачка с нахождением анаграмм в массиве?
как можно улучшить данный код
Избежать лишних действий.
Например, незачем на каждом шаге снова разбивать и сортировать исходное слово – достаточно сделать это один раз:function anagrams(word, words) {
    const sample = word.split('').sort().join('');
    return words.filter(function (e) {
        return e.split('').sort().join('') === sample;
    })
}
Нет смысла проверять неподходящие по длине слова.function anagrams(word, words) {
    const length = word.length;
    const sample = word.split('').sort().join('');
    return words.filter(w => w.length === length)
        .filter(function (e) {
            return e.split('').sort().join('') === sample;
        })
}
P.S. я вот такое решение отправил. Сравнить длину. Привести к lowercase. Запоминать позиции, в которых найден очередной символ и дальше искать после этой позиции (если будут повторы этого же символа). Как только какой-то символ не найден – всё, не совпали.Код// write the function isAnagram
var isAnagram = function(test, original) {
  const length = original.length;

  if (length !== test.length) return false;

  const A = test.toLowerCase();
  const B = original.toLowerCase();
  const dict = {};

  for (let i=0, char, pos; i < length; i++) {
    char = A[i];
    pos = B.indexOf(char, +dict[char]);
    if (!~pos) return false;
    dict[char] = pos + 1;
  }

  return true;
};
Я не понял вопроса. При чём тут анаграммы, если надо просто найти в массиве строки, совпадающие с заданной? Это простой перебор массива и сравнение строк на совпадение.