2016-09-20 53 views
0

如何比較每個URL與數組中已有的URL,但只能通過它們的GET參數名稱(而不是值)進行比較。JavaScript有什麼方法通過其GET參數比較URL名稱

例如:

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); 
} 

這個例子應該添加NEWURL到urlArray但不應添加此網址: 「http://example.org/page.php?param5=777&param6=000

+1

只是[解析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,它是唯一的,但由於它不是我離開它的問題的一部分,可能有一些時間在今晚晚些時候更新。

相關問題