У меня есть данный word
, который я хочу сопоставить с заданным списком слов, mainList
, и установить, какие слова из этого заданного списка являются анаграммами данного слова, и добавить их в другой список, subList
.
Я чувствую, что мой метод сделать это в порядке, но он возвращает неожиданный результат.
Например...
var word = 'master';
var mainList = ['stream', 'pidgeon', 'maters'];
var subList = [];
Затем я беру слово, разбиваю его на массив букв, упорядочиваю по алфавиту и снова соединяю в строку. С этой строкой я должен сопоставить любые возможные анаграммы (которые я буду скрывать таким же образом).
var mainSorted = [];
for (i = 0; i < word.length; i++) {
mainSorted = word.split('').sort().join();
}
Вот где это идет не так. Я перебираю массив mainList
, пытаясь установить, соответствует ли данный элемент при преобразовании оригиналу. Если это так, я хочу push
слова в массив subList
.
for (var i = 0; i < mainList.length; i++) {
var subSorted = mainList[i].split('').sort().join;
if (mainSorted === subSorted) {
subList.push(mainList[i])
}
}
return subList;
... и значение, которое я ожидаю увидеть для subList: ['stream', 'maters']
Но вместо этого мне возвращается пустой массив.
Я прошел через это так много раз, и я не могу понять, что происходит не так, буду очень признателен за помощь!
Кроме того, я знаю, что, вероятно, есть более красноречивые методы сделать это (и я приветствую любые предложения), но в первую очередь я хочу увидеть, где это идет не так.
Заранее спасибо.