1

ここでいくつかの質問を既に読みましたが、探しているものを正確に見つけることができないようです。基本的に、配列に存在する要素のいずれかが文字列に存在するかどうかを知る必要があります。例:

var currentHref = "http://www.vorcu.com/hello";
var urls = [ 
    "vorcu.com",
    "neutronico.com",
    "word2.com"
       ];

したがって、「urls」の要素のいずれかが「currentHref」に存在するテキストのいずれかと一致するかどうかを知る必要があります。何か案は?

ありがとう!

4

6 に答える 6

2

このようなもの:

for (var i = 0; i < urls.length; i++) {
    if (currentHref.indexOf(urls[i]) != -1) {
        alert(urls[i]); // found occurence, break or continue
    }
}

またはRegExpの方法(上記の方法が推奨されます):

var isInArray = RegExp(urls.join('|')).test(currentHref); // true|false

また

var matches = currentHref.match(urls.join('|')); // array of matches ["vorcu.com"]
于 2013-10-22T21:33:15.110 に答える
1

誰もがJavascriptの回答を提供しています(私は完全にサポートしています)が、jQueryについて言及したからといって、代替案を提供すると思います:

var curHref = window.location.hostname.split('.'),
    // i imagine your static string was just for test purposes
    checkHref = curHref[1]+'.'+curHref[2],
    urls = [ 
        "vorcu.com",
        "neutronico.com",
        "word2.com"
    ];

if($.inArray(checkHref,urls) > -1){
    // its in there, do your magic
}

これにより、チェックしたいと思われるオブジェクト (ホスト名から www を差し引いたもの) が作成され、それがjQuery の inArrayメソッドurlsを使用してアイテムのいずれかと一致するかどうかが決まります。

于 2013-10-22T21:34:57.573 に答える
0

次のような関数が機能するはずです。

function containsAny(str, arr) {
    for (var i = 0; i < arr.length; i++) {
        if (str.indexOf(arr[i]) !== -1) {
            return true;
        }
    }
    return false;
}

代わりに、より遅いがより簡潔な方法を使用することもできます:

RegExp(arr.join('|')).exec(str);
于 2013-10-22T21:39:58.150 に答える
0

some多くのブラウザでサポートされているメソッドを使用できます。

var currentHref = "http://www.vorcu.com/hello";
var urls = [ 
    "vorcu.com",
    "neutronico.com",
    "word2.com"
       ];
var containsAny = urls.some(function(x) { return currentHref.indexOf(x) >= 0; });

がサポートされていないブラウザとの互換性のためsomeに、リンクした MDN の記事で使用できる実装が提供されています。

于 2013-10-22T21:55:39.777 に答える