私がここで作業を始めるずっと前に作られたファイルは、53の異なる数値のリストを持っています。しかし、それはそれらすべて、たとえばなどのコンマで区切った文字列として表示されています:値を持つ文字列と値の配列
var numbers = "1,2,3,4,5,...,48,49,50";
後のスクリプトで、それが使用中で渡された変数が存在するかどうかを確認し、存在するとき:
は、if(numbers.indexOf(String(x),0) < 0) {/*do stuff*/} else {/*do other stuff*/}
これはうまくいくものの、なぜこのようなやり方が選択されたのか不思議ではありません。それは、それが現在設定されている方法でそれをやっているという点でパフォーマンスの点でより最適でしょうか?
なぜ?あなたの前の男はそれが良い考えだと思ったから。頻繁な検索をしている場合、配列に変換する必要があります( 'indexOf'はかなり遅いので)(http://stackoverflow.com/questions/6682951/why-is-looping-through-an-array-so -mak-faster-than-javascripts-native-indexof)、データは配列を暗示しているようです。 –
おそらく配列indexOfがサポートされる前に書かれています。しかし、文字列indexofは部分的にマッチしているので脆弱です。 – epascarello
文字列に '4'が含まれておらず、' 14'が含まれている場合、 '4'のインデックスをチェックすると' 14'に '4'のインデックスが返されます。配列の場合は '-1'を返します。 –