2017-12-20 15 views
0

私はJavaScriptを始まりと第10章では、この演習があり読んでいます:!なぜ彼らは!= -1ここで使うのですのindexOf()> -1対のindexOf()= -1

var myImages = [ 
     "usa.gif", 
     "canada.gif", 
     "jamaica.gif", 
     "mexico.gif" 
    ]; 

    function changeImg(e) { 
     var el = e.target; 
     var newImgNumber = Math.round(Math.random() * 3); 

     while (el.src.indexOf(myImages[newImgNumber]) != -1) { 
      newImgNumber = Math.round(Math.random() * 3); 
     } 

     el.src = myImages[newImgNumber]; 
    } 

    function updateStatus(e) { 
     var el = e.target; 
     var status = document.getElementById("status"); 

     status.innerHTML = "The image changed to " + el.src; 

     if (el.src.indexOf("mexico") > -1) { 
      el.removeEventListener("click", changeImg); 
      el.removeEventListener("click", updateStatus); 
     } 
    } 

    var imgObj = document.getElementById("img0"); 

    imgObj.addEventListener("click", changeImg); 
    imgObj.addEventListener("click", updateStatus); 

while (el.src.indexOf(myImages[newImgNumber]) != -1) { 

ここ> -1

if (el.src.indexOf("mexico") > -1) { 

-1の使用が混乱しているメートルe。 indexOf操作が配列内に存在しない値を検索した場合に-1が返されるので

-1
+7

'Array.prototype.indexOf'とは何ですか、あなたの答えは – evolutionxbox

+0

です。ランダム要素選択ツールは、配列の最初と最後の要素を選択することに真剣に偏っています。代わりに 'Math.floor(Math.random()* myImages.length)'を使用してください。 – James

+0

これは本の例ですが、なぜ> -1を使用しているのか分かりません。 私は既にArray.prototype.indexOfを見ていますが、要素が選択されているかどうか> -1を使用する理由はわかりません。 – Jaycbrf4

答えて

1

indexOfは、検索が文字列にない場合は-1を返します。これは、indexOfが文字列中の検索語の位置を返すためです。例えば、

> -1は私が個人的には後者を好むが、!== -1と言っている別の方法です。

var test = 'testing'; 
test.indexOf('test'); // returns 0 which is falsy 
test.indexOf('st'); // Returns 2 
test.indexOf('foo'); // returns -1 

同じように配列になります。

なぜ、-1と答えてくれることを願っていますか?

+0

したがって、-1または!= -1は、変数に間違いなくあると言う2つの方法ですか? – Jaycbrf4

+0

私はそれらを-1>どんな場所でも見つけられると思っており、!= - 1は見つからないと思っています。これは、別の重要なインデックスがある場合、私はいつも同じフレーズを頭の中で使うことができるからです。最初の10項目(何らかの理由で)の後に何かを探しているとしたら、> 10は「10の後の任意の場所にある」という意味で、!= 10は「10で見つからない」という意味です。そのように使用しないでください。 – BSD

2

の使用です。

なぜ!= -1を1か所で使用し、> -1を別の人に使用するのはおそらく、仕事に就いているエディタでしょう。

1

thisを見てみましょう:

「このメソッドは-1を返し検索する値が発生したことがない場合。」

参照する行は、要素が実際に配列内にある場合に条件が満たされる条件です。