Javascript有没有办法比较URL的GET参数NAMES

时间:2016-09-20 12:57:38

标签: javascript url compare

如何将每个URL与已存在于数组中的URL进行比较,但只能将其与GET参数名称(而不是值)进行比较。

例如:

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,但不应添加此URL: &#34; http://example.org/page.php?param5=777&param6=000&#34;

1 个答案:

答案 0 :(得分: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&amp; param6 = 2,它是唯一的,但由于它不是我遗漏的问题的一部分,可能有一些时间在今晚晚些时候更新。