2017-06-23 4 views
0

このJavaScriptコードでは、forループ "I guess"の代わりにarray.filterを使用してパフォーマンスを向上させようとしています。いずれにしても、結果は同じではないと予想されます。 studentsの名前は、searchWordsアレイに含まれています。
任意のアイデアなぜですか?THXはforループを配列フィルターに変換する

let searchWords = ['john','matt','marry']; 
 
let students = ['matt','jack']; 
 
let names = []; 
 
for (let i = 0; i < searchWords.length; i++) { 
 
    if (students.indexOf(searchWords[i]) !== -1) { 
 
     names.push(searchWords[i]); 
 
    } 
 
} 
 
console.log(names.length); // => 1 "correct" 
 

 
names = []; 
 
names = searchWords.filter(x => students.filter(y => students.indexOf(x) !== -1)); 
 
console.log(names.length); // => 3 "incorrect"

答えて

3

フィルタラインは基本的に別のループを追加しました。それは私がちょうどそれを答えた

names = searchWords.filter(x => students.indexOf(x) !== -1); 
+0

でなければなりません... ;-) – RobG

+0

私は最後にそれを使用するのでうわージャバスクリプトが変更されています。今度は 'let'と' lambda'関数を持っています。クール。 – 0x499602D2

+0

@ 0x499602D2 - それは常にラムダ関数を持っていましたが、矢印の構文は新しくなっています(呼び出しではなく*これを字句的に設定します)。 – RobG

関連する問題