文字列型の使用法
よく知られている文字列の使用法を確認してください。例:
let str = 'orange'; str.indexOf('o'); //0 str.indexOf('n'); //3 str.indexOf('c'); //-1
ここで、0 と 3 は、それぞれ文字列内で o と n が現れる位置です。開始インデックスは 0 です。 -1 は一致しないことを意味します。
かつて誰かが、なぜ -1 が null または未定義ではないのかと尋ねました。ルールを作った人に聞いてください。彼は無力そうに見えました。
ここには何も興味深いものはありませんが、心配しないでください。ここに別の例があります
let numStr = '2016'; numStr.indexOf('2'); //0 numStr.indexOf(2); //0
ここで小さなポイントがあります。indexOf は単純な型変換を行い、数値を文字列 '2' に変換して実行します。
Number 型の使用
暗黙的な変換を行うため、Number 型に IndexOf メソッドがあるかどうか疑問に思うかもしれません。上の例では、存在しないことをはっきりとお伝えしておきます
let num = 2016; num.indexOf(2); //Uncaught TypeError: num.indexOf is not a function
IndexOf メソッドを使用する必要がありますか?数値型の場合は? 次に、それを String に変換し、上記の例に従って
//二逼青年的写法 num = '2016'; num.indexOf(2); //0 //普通青年的写法 num.toString().indexOf(2); //0 //文艺青年的写法 ('' + num).indexOf(2); //0
を記述します。最初の記述方法は単純かつ直接的であり、既知の短い数値の場合は不可能ではありません。しかし、異なるデータに対して num 変数が変更された場合はどうすればよいでしょうか?
2 番目の書き方が最も一般的に使用されますが、3 番目の書き方よりも少し長くなります。あはは、実際のところ、どれも問題ありません。コードに夢中になっている人は、3 番目の
配列型
を使用することを好みます。皆さん、元気を出してください。ビッグボスがやって来ます。
配列メソッドについては誰もがよく知っていますが、配列にはindexOfメソッドがあることを無視しています(私の個人的な感覚です)。
これは練習なしでただの話です。どのような問題が発生しましたか?何に注意する必要がありますか?
rreeeここでは、4 つの使用例で問題を説明するのに十分です。
arr.indexOf('orange') は、'orange' が配列の 0 番目の要素であり、インデックスが一致して返されるため、0 を出力します。
arr.indexOf('o') は -1 を出力します。これは、このメソッドが要素ごとに IndexOf の照合を再度実行しないためです。
arr.indexOf('2016') は、すべての一致のインデックスを返すのではなく、一致の先頭から一致に到達するまでの最初の配列要素の次のリストを返すため、1 を出力します。
arr.indexOf(2016) 出力 -1 注: ここでは暗黙的な型変換は行われません。
穴が発見されたので、その底に到達するのも良いかもしれません。 MDN 公式 Web サイトにアクセスして確認してください。このトピックに興味のある友人は、Array.prototype.indexOf() に直接ジャンプできます
もっと知りたい人のために、ここに公式の説明があります。
indexOf() は、厳密な等価性 (=== またはトリプル等価演算子で使用されるのと同じ方法) を使用して、searchElement を配列の要素と比較します。
厳密な等価性 (===) が使用されていることが一目でわかります。ここ。同様の判断をされる場合には、より一層ご注意ください。数値は文字列に変換され、文字列は数値に変換されないと誤解しないでください。
まとめ
小さな知識ポイントの蓄積は、詳細な議論の対象ではないため、ここでは、indexOf() の 2 番目のパラメーターの役割については説明していないと思います。ここで String.prototype .indexOf() を見て、上の配列へのリンクと組み合わされた 2 番目のパラメーターを見てください。