Jquery/Javascript 删除URL字符串中的重复参数

4

以下是我的URL字符串,我想要拆分参数并获取“q”参数的值。

a) http://myserver.com/search?q=bread?topic=14&sort=score
b) http://myserver.com/search?q=bread?topic=14&sort=score&q=cheese

how do i use Jquery/JavaScript to get "q" value?

a) 对于情况a),我可以使用字符串分割或使用jQuery的getUrlParam函数来获取q值等于bread的参数。

b) 当存在重复的参数时,我该如何获取最后一个q参数对应的值?


此问题可能会对您有所帮助:https://dev59.com/nHNA5IYBdhLWcg3wmfAa - xkeshav
4个回答

2

使用纯JavaScript,请尝试

function getParameterByName(name) {

    var match = RegExp('[?&]' + name + '=([^&]*)')
                    .exec(window.location.search);

    return match && decodeURIComponent(match[1].replace(/\+/g, ' '));

}

参考链接

在jQuery中,可以使用这个插件。

https://github.com/allmarkedup/jQuery-URL-Parser

更新

如果您获取了所有查询字符串的数组,则可以尝试使用jQuery的unique方法来从数组中删除重复项,或者使用此插件。

http://plugins.jquery.com/plugin-tags/array-remove-duplicates


您提供的代码将获取第一个 q=,而不是最后一个 q= - Thai

1

在这里,您可以使用正则表达式。例如,我们可能有以下字符串:

var str = 'http://myserver.com/search?q=bread&topic=14&sort=score&q=cheese';

通过删除从开头到第一个问号之间的所有内容,找到URL的搜索部分。

var search = str.replace(/^[^?]+\?/, '');

设置一个模式来捕获所有q=something

var pattern = /(^|&)q=([^&]*)/g;
var q = [], match;

然后执行该模式。

while ((match = pattern.exec(search))) {
    q.push(match[2]);
}

接下来,q将包含所有的q参数。在这种情况下,["bread", "cheese"]

然后你可以使用任何一个q

如果你只关心最后一个,你可以用q = match[2]替换q.push行。


0

看起来你可以同时使用getUrlParam,但是你必须将第二种情况的返回值处理为一个包含多个值的数组(至少在我查看的getUrlParam code中是这样)。


0

getUrlParam('q') 应该返回一个数组。尝试使用以下代码获取这些值:

values = $.getUrlParam('q');

// use the following code
first_q_value = values[0];
second_q_value = values[1];

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接