url传参去重

今天遇到一个这样的问题,有一个带参数的url例如:http://www.songchong.comname=songchong&age=24&hometown=hebei&name=songchong&height=180

我们可以看到里面”name=songchong“传个两次,重复了,需要用一段js代码把重复的内容去掉。

这里说一下我的思路,我首先想到了截取字符串和查找字符,但是失败了,原因是indexOf()方法只能返回字符首次出现在字符串中的位置,可是每个参数之间都是用”&“隔开的,这就导致了无法截取。

最后先遍历字符串找出所有”&“的位置,然后截取字符串,拼接字符串,完成任务。

下面是我的代码:

<script>
    var url = "http://www.songchong.com?name=songchong&age=24&hometown=hebei&name=songchong&height=180";
    var new_url = "";
    var new_name_and_value = [];
    var where_i = [];
    var name_and_value = [];
    for(var i=0;i<url.length;i++){
        if(url.substring(i-1,i) == "&"||url.substring(i-1,i) == "?"){
            where_i.push(i)
        }
    }
    name_and_value.push(url.substring(where_i[where_i.length-1],url.length));
    for(var j=0;j<where_i.length-1;j++){

    name_and_value.push(url.substring(where_i[j],where_i[j+1]-1))
}
    name_and_value.forEach(function(data){
        if(new_name_and_value.indexOf(data) == -1){
            new_name_and_value.push(data)
        }
    });
    new_url = url.substring(0,where_i[0]);
    new_name_and_value.forEach(function(value){
        new_url = new_url+value+"&"
    });
    new_url = new_url.substring(0,new_url.length-1);
    console.log(new_url)
</script>

猜你喜欢

转载自873719187.iteye.com/blog/2289783