2012-03-29 5 views
0

文字列がjavascriptで配列に含まれているかどうかを確認しようとしています。私は周りを検索し、以下のコードを見つけました(私の変更のいくつかもあります)。私はそれが成功したときに警告を発するように設定しました。それが成功すると、それ以降に実行されるたびに、ページが更新されるまで成功したままになります。失敗した場合、同じことが起こります。実行するたびに新鮮なものにすることができますか?配列スクリプトの文字列に問題がないか確認する

function urlVerify(a, b) { 
    for (var j=0; j<a.length; j++) { 
     if (a[j].match (b)) { 
      ... 
      alert('found'); 
      return j; 
     } 
    } 
    ... 
    alert('notfound'); 
    return -1; 
} 

配列が含まれており、以下のように関数である呼び出すコード:

$(document).ready(function() { 

    var urlPlain = window.location.hash.replace(/[#/]+/g, ""); 

    var pageIndex = [ 
     'home', 
     'contact' 
    ]  

    urlVerify(pageIndex, urlPlain); 

}); 

次のように通常のウェブサイトのURLが行くだろう:www.example.com/#/home

その後urlPlain変数はそれがために簡素化に:home

+0

このコードは、へ音に見える単語が配列である場合、文字列に応じて、あなたが使用することができるかもしれ、見るに

私。副作用はありません。 '新鮮なものは何もありません。 – Halcyon

+0

配列が定義されている場所と 'urlVerify'関数を呼び出す場所のコード部分を含めるべきです。このコードを簡単なテストケースに拘束しようとしましたか? –

+0

私はコードを追加しました。私は簡単なテストケースでコードを試しましたが、それは同じように動作しました。 urlVerify関数を呼び出すたびに、文字列が配列内にあるかどうかを忘れてしまいたいです。 – Erurainion

答えて

1

「#/」までをすべて削除するには、

var lastBit = url.replace(/.*#\//, '') 

上記は、最後の "#/"の後のすべてを返します。しかし、最後のビットだけが必要な場合は、なぜハッシュを含めるのですか?

var hasLastBit = wordArray.join().match(lastBit); 

以上の正確なバージョン:

var re = new RegExp('(^|\s)' + lastBit + '(\s|$)'); 
var hasLastBit = re.test(wordArray.join(' ')); 
+0

ハッシュを読み取っているだけなので、ハッシュの前にすべてをクリアする必要はなく、jQuery.inArray()と私の問題を解消したもう一つの修正を使用しています。 – Erurainion

関連する問題