2016-08-08 1 views
0

与えられた単語リストmainListと照合して、指定された単語のアナグラムである単語を設定して別の単語に追加したいという指定のwordがありますリスト、subListアナグラムを一致させて配列にプッシュ

これを行う方法が気に入っていますが、予期しない結果が返ってきます。例えば

...

var word = 'master'; 
var mainList = ['stream', 'pidgeon', 'maters']; 
var subList = []; 

は、それから私は、言葉、文字の配列に分割し、alphabetiseを取り、文字列に戻って参加します。この文字列で、私は可能なアナグラム(これは私が同じ方法で秘密にする)と対戦することができます。

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']

しかし、私が代わりに空の配列を返しています。

私はこれを何度も経験しましたが、何がうまくいかないのか分かりませんが、本当に助けに感謝します。

また、私はこれを行うためのより説得力のある方法があることを知っています(そして、私は何か提案を歓迎します)が、主に私はこれが間違っているのを見たいと思っています。

ありがとうございます。あなたが参加

var subSorted = mainList[i].split('').sort().join; 

の末尾に()を忘れてしまった

答えて

2

があるべき

var subSorted = mainList[i].split('').sort().join(); 

一つの非問題は、(i = 0のため

であり、私< word.length。 i ++){ mainSorted = word.split( '')。sort()。join(); }

doesntの一人で

mainSorted = word.split('').sort().join(); 

ループにする必要がボーナスとして

をすれば良い、ここに私がしてきたあなたが

var word = 'master'; 
var mainList = ['stream', 'pidgeon', 'maters']; 

var mainSorted = word.split('').sort().join(); 

return mainList.filter(function(sub) { 
    return sub.split('').sort().join() == mainSorted; 
}); 
+0

をやっているやって整然と方法です私の頭をレンガの壁に打ち負かすと、それはすべて問題だった。 HA。ありがとう!! :) – Paulos3000

+0

なぜ、私が 'mainSorted'のループを作ったのかよくわかりません。 'filter()'については、実際にはまだ使用していませんが、より良い選択肢のように見えます。 – Paulos3000

関連する問題