1

ハッシュタグのフィルタリングに関係するこのコードスニペットを見つけましたが、それが何をしようとしているのか理解できません。

ヘッドアップをありがとう...

var index = 0;
var hash = window.location.hash; //store the entered hash value eg, #02

if (hash) {
    index = /\d+/.exec(hash)[0];
    index = (parseInt(index) || 1) - 1;
}
4

4 に答える 4

2
  • if (hash) {:hashがのようなガベージ値でないundefined場合、nullまたは空の文字列。
  • index = /\d+/.exec(hash)[0]: ハッシュ内の最初の数値を探します。たとえば、内部#432では432 (返される値は文字列であることに注意してください) となります
  • index = (parseInt(index) || 1) - 1: 数値に変換indexしてみてください。それがうまくいき、結果の数値が返された値から0減算されない場合1は、返された値から1減算し1て、 が得られます。0ここでの主なアイデアは、インデックスが 未満になることはありません0
于 2013-11-06T16:01:14.330 に答える
1
var hash = window.location.hash; //store the entered hash value eg, #02

URL の # 部分を取得するだけです

if (hash) {

ハッシュが空でないかどうかを確認します

    index = /\d+/.exec(hash)[0];

一連の数字 (\d+ が意味するもの) に対してハッシュを一致させようとし、最初のそのようなシーケンスを index に割り当てます。

    index = (parseInt(index) || 1) - 1;

インデックスを数値に変換して 1 減らすだけです

ハッシュに数字が含まれていない場合、このコードは例外をスローするため、あまり堅牢ではありません

于 2013-11-06T16:02:47.013 に答える
1

/\d+/1 つ以上の数字を意味します。

+前の要素の 1 つまたは複数を意味します。

また、エグゼクティブ

一致が成功した場合、exec メソッドは配列を返し、正規表現オブジェクトのプロパティを更新します。返された配列には、最初の項目として一致したテキストがあり、次に、キャプチャされたテキストを含む、一致したキャプチャ括弧ごとに 1 つの項目があります。

一致しない場合、exec メソッドは null を返します。

于 2013-11-06T15:59:37.137 に答える
1

正規表現\dでは、単一の数値に一致します。正規表現の+は、その前の式の繰り返しに一致します。したがって\d+、完全な (すべての反復) 数値に一致します。

そう

"55".match(/\d+/) //=>["55"]
"55".match(/\d/) //=>["5"]
"A string with 55".match(/\d+/) //=>["55"]
于 2013-11-06T16:01:19.447 に答える