欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

关于使用JS去除URL中的指定参数问题,js 对url进行某个参数的删除,并返回url

程序员文章站 2022-07-06 12:37:17
在网页上找了半天,发现现在的资源实在是少的可怜,而前端尤甚。所以没办法,于是自己花了一些时间写了一个; 1 /** 2 * 删除URL中的指定参数 3 * @param {*} url 4 * @param {*} name 5 */ 6 function delUrlParams(url, nam ......

在网页上找了半天,发现现在的资源实在是少的可怜,而前端尤甚。所以没办法,于是自己花了一些时间写了一个;

 

 1 /**
 2  * 删除url中的指定参数
 3  * @param {*} url 
 4  * @param {*} name 
 5  */
 6 function delurlparams(url, name){
 7   //根据#号拆分
 8   let poundarr = url.split('#')
 9   //?拆分
10   let questionarr = [] 
11   if (poundarr) {
12       //把#接上
13       poundarr.foreach((element,index) => {
14           if(index>0){
15               element = '#'+ element
16           }
17 
18           let temparr = element.split('?')
19           if(!temparr){
20               return true
21           }
22           temparr.foreach((item, idx) => {
23               //保留问号
24               if (idx > 0) {
25                   item = '?'+item
26               }
27               questionarr.push(item)
28           })
29       });
30   }else{
31       questionarr = url.split('?')
32       if (questionarr) {
33           questionarr.foreach((item, idx)  => {
34               if (idx > 0) {
35                   item = '?'+item
36               }
37           })
38       }
39   }
40 
41   if(!questionarr){
42       return  url
43   }
44 
45   //&符号的处理
46   let andarr = []
47   questionarr.foreach((item,index) => {
48       let andidx = item.indexof('&')
49       if (andidx <= -1) {
50           andarr.push(item)
51           return true
52       } 
53 
54       let tempandarr = item.split('&')
55       tempandarr.foreach((ele, idx) => {
56           if (idx > 0) {
57               ele = '&' + ele
58           }
59           andarr.push(ele)
60       })
61   })
62 
63 
64   let newurl = ''
65   andarr.foreach(item => {
66       let nameindex = item.indexof(name+'=')
67       //不拼接要删除的参数
68       if (nameindex > -1) {
69           //保留第一个问号
70           let questionidx = item.indexof('?')
71           if (questionidx == 0) {
72               newurl += '?'
73           }
74           return true
75       }
76       newurl += item
77   })
78 
79   return newurl.replace(/\?\&/g,"?")
80 }