如何将每个URL与已存在于数组中的URL进行比较,但只能将其与GET参数名称(而不是值)进行比较。
例如:
var urlArray = [
"http://example.org/page.php?param1=123¶m2=234",
"http://example.org/page.php?param3=123¶m4=234",
"http://example.org/page.php?param5=123¶m6=234",
];
var newUrl = "http://example.org/page.php?param1=123¶m2=234¶m3=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¶m6=000&#34;
答案 0 :(得分:0)
var urlArray = ['http://example.org/page.php?param1=123¶m2=234','http://example.org/page.php?param3=123¶m4=234','http://example.org/page.php?param5=123¶m6=234','http://example.org/page.php?param6=890¶m5=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,它是唯一的,但由于它不是我遗漏的问题的一部分,可能有一些时间在今晚晚些时候更新。