2016-09-20 14 views
0

どのURLを既に配列内にあるものと比較することができますが、GETパラメータ名(値ではない)のみで比較することができます。例えばJavascript URLをGETパラメータで比較する方法はありますか?NAMES

var urlArray = [ 
"http://example.org/page.php?param1=123&param2=234", 
"http://example.org/page.php?param3=123&param4=234", 
"http://example.org/page.php?param5=123&param6=234", 
]; 

var newUrl = "http://example.org/page.php?param1=123&param2=234&param3=345"; 

addingFlag = 1; 

for (a = 0; a < urlArray.length; a++){ 
    var LinkFromArray = urlArray[a].replace(/=.*\&|=.*/, ""); 
    var LinkToArray = newUrl.replace(/=.*&|=.*/, ""); 

    if (LinkFromArray.indexOf(LinkToArray) >= 0){ 
     addingFlag = 0; 
    } 
} 

if (addingFlag == 1){ 
    urlArray.push(newUrl); 
} 

この例ではurlArrayにNEWURLを追加する必要がありますが、このURLを追加してはいけません:? "http://example.org/page.php?param5=777&param6=000"

+1

[parse the url](http://stackoverflow.com/q/901115/1048572)、それらの部分を結合して戻します。 – Bergi

答えて

0
var urlArray = ['http://example.org/page.php?param1=123&param2=234','http://example.org/page.php?param3=123&param4=234','http://example.org/page.php?param5=123&param6=234','http://example.org/page.php?param6=890&param5=765']; 

var uniqueUrls = [urlArray[0]]; 

for (var a = 1; a < urlArray.length; a++) { 

    var params = urlArray[a].split("?")[1].split("&"); 
    for (var c = 0; c < uniqueUrls.length; c++) { 

     var exists = []; 
     for (var b = 0; b < params.length; b++) { 

      var param = params[b].split("=")[0]; 
      if (uniqueUrls[c].indexOf("?" + param + "=") > -1 || uniqueUrls[c].indexOf("&" + param + "=") > -1) 
       exists.push(1); 
     } 
    } 

    if (exists.length != params.length) 
     uniqueUrls.push(urlArray[a]); 
} 

はparam6 = 1このような場合があるかもしれません& param6 = 2、それはユニークですが、私が残した質問の一部ではなかったので、今晩後にそれを更新する時間があるかもしれません。

関連する問題