3

いくつかの Web サイトをリストする配列があります。

var validSites = new Array();
validSites[0] = "example_1.com";
validSites[1] = "example_2.com";
validSites[2] = "example_3.com";

今、私はあなたがどのウェブアドレスを使用しているかをチェックし、次のようなものを返す小さなスクリプトを持っています:

example_1.com/something/something_else

そのアドレスが有効なサイトの 1 つであるかどうかを確認する必要があります。それで

example_1.com/*ANYTHING* 

正しいものとして合格します。しかし

exampleshmample.com

間違っていると見なされます。

これで、文字列が文字列の一部であるかどうかを確認できる indexOf() を実行でき、false の場合は -1 を返すことがわかりました。しかし、配列全体を通してどのようにチェックするのでしょうか?

Ps - Chrome 拡張機能用です。

ありがとう

4

4 に答える 4

5

ここにアイデアがあります:

var str = 'example_1.com/something/something_else';
if( validSites.indexOf( str.split('/')[0] ) > -1 ) {
    // is valid
}

もう 1 つは、結合された配列で正規表現を使用することです。

var str = 'example_1.com/something/something_else';
new RegExp('^('+validSites.join('|')+')','i').test(str);

これは、f.ex example_1.comyoyoyoにも一致します。

于 2013-03-26T13:53:46.203 に答える
1
if (validStates.indexOf("example_1.com") > -1) {
  // Then it's inside your array
} 
else {
  // Then it's not inside your array
}
于 2013-03-26T13:53:07.303 に答える
0

フラグ変数をループして設定することでこれを実現できます。これを試してください。これはテストされていません。コードを直接入力しただけです。私はこれがあなたを助けるかもしれないと思う

var flag =0;
var givenurl='example_1.com/*ANYTHING*';
for(int i=0 i<validSites.length;i++){
if(givenurl.indexOf(validSites[i])){
flag=1 //Found
}
}
if(flag) { //Url Found }else{ //not found } 
于 2013-03-26T14:04:08.490 に答える
0

このシナリオでは、配列から切り替えることができれば、json表記を使用します

var validSites = {
  "example_1.com":"valid",
  "example_2.com":true,
  "example_3.com":1 //you could even start putting paths in here to beef up your check.
};

//..チェック関数は次のようになります: .....

if(validSites[window.location.hostname]){
  return true;
}else{
  return false;
}
于 2013-03-26T13:58:12.423 に答える