2017-01-19 12 views
0

.indexOf()が-1を返すのはなぜですか?

function mutation(arr) { 
 
     var total = arr.map(function(x){return x.toLowerCase();}); 
 
      var sec = total[1]; 
 
      for(var i=0; i < sec.length; i++){ 
 
     //  console.log(sec[i]); 
 
       console.log(total.indexOf(sec[i])); 
 
      } 
 
     } 
 
     mutation(["hello", "hey"]);

私はそれを理解して下さい。 行は

の文字列です。

console.log(sec [i]);

は、「hey」文字列の文字を時間ごとにコンソールに表示します。それは大丈夫です! は今、私が知っておくべきである理由私は

にconsole.logに '[i]のを秒' をCAL whem(total.indexOf(秒[I]));

出力はすべて '-1'です。つまり、.indexOf()メソッドが見つからないことを意味します。 任意の文字!

+2

のindexOfを使用すると、文字列のバージョンのようにそれを使用しようとしている、アレイ上の全要素を見て、彼らは2つの異なる機能です。 – dandavis

+0

それです!私はStringバージョンの代わりに配列バージョンを使用しています!ありがとう@ダンダビス – samu101108

答えて

0

totalの配列を1文字と照合しています。つまり、長さが等しくなく、長さが1以上の文字列が1文字(文字列長1)と等しくないことを意味します。

は基本的にあなたがこれを行う:

["hello", "hey"].indexOf('h') // -1 
["hello", "hey"].indexOf('e') // -1 
["hello", "hey"].indexOf('y') // -1 

2番目の文字で最初の文字列をチェックしたい場合は、インデックスを指定する必要があります。

console.log(total[0].indexOf(sec[i])); 
       ^^^ 

function mutation(arr) { 
 
    var total = arr.map(function (x) { return x.toLowerCase(); }), 
 
     sec = total[1], 
 
     i; 
 

 
    for (i = 0; i < sec.length; i++){ 
 
     console.log(sec[i], total[0].indexOf(sec[i])); 
 
    } 
 
} 
 

 
mutation(["hello", "hey"]);

0

-1を取得している理由が見つかりませんでした。

関連する問題