問題ステートメント:考える二つの配列とBは( B、)機能COMPを書き込む(Clojureの中compSame( B ))は、2つの配列が「同一のを持っているかどうかをチェック同じ要素が複数存在します。 「同じ」とは、ここでは、のの要素が、順序にかかわらずのの要素であることを意味します。非効率なJavaScriptアルゴリズム、次のコードをより効率的にするにはどうすればよいですか?
マイソリューション:私はまだそう常に改善するために探しているだけでwookieだとして
function comp(array1, array2){
var test;
if(array1.length <= 0 || array2.length <= 0 || array1 == null || array2 == null || array2.length != array1.length || array1==undefined || array2==undefined){
return false;
}else{
for(i=0; i<array2.length; i++){
for(j=0; j<array1.length; j++){
if(array2[i] === Math.pow(array1[j],2)){
test = true;
break;
}else{
test = false;
}
}
if(test==false)
return false;
}
if(test === true)
return true;
else
return false;
}
}
はまた、コードについての建設的な批判が理解されます。
試験例:最終的な結果については
var a1 = [80, 2, 65, 68];
var a2 = [6401, 4, 4225, 4624];
同様に真の場合は真が偽のために返されるために、私が望むすべてがあります。プログラムはすべてのテストケースを解決しますが、タイムアウトします。すなわち
負の配列長? –
すばらしいことは、 'array1 == null'をチェックする前に' array1.length'をチェックしていることです。後者が本当であれば前者を実行するとエラーが発生します。 –
テスト用の配列と必要な結果を追加してください。 –