URL 参数解析

  1. url参数解析为对象
  2. url参数解析为数组
  3. URLSearchParams(兼容性有待提高,慎用)

url参数解析为对象

const urlQueryToObject = (url) => {
    if((/\?/).test(url)) {
        const arr =  url.split('?')[1].split('&');

        return  arr.reduce((acc,value,index) => {value.replace(/(\w+)=(\w+)/,(match,p1,p2) => {acc[p1] = p2});return acc},{});
    }
    return {}
}

const getURLParameters = url =>
  (url.match(/([^?=&]+)(=([^&]*))/g) || []).reduce(
    (a, v) => ((a[v.slice(0, v.indexOf('='))] = v.slice(v.indexOf('=') + 1)), a),
    {}
);
// example
// location.href ='http://example.com/user?id=1&age=2'
const paramsObj = urlQueryToObject(location.href)  //{id: "1", age: "2"}
paramsObj.id
paramsObj.age

url参数解析为数组

const urlQueryToArr = url => {
    if((/\?/).test(url)) {
        const arr = url.split('?')[1].split('&');
        return arr.reduce((acc,value,index) => {acc.push(value.split('='));return acc;},[])
    }
    return []
}
// example
// location.href ='http://example.com/user?id=1&age=2'
JSON.stringify(urlQueryToArr(location.href)) //  "[["id","1"],["age","2"]]"

URLSearchParams

/**
 *
 * @param {string} url
 * @return URLSearchParams ;
 */
const urlParams = url => {
    if(/\?/.test(url)) {
        return searchParams = new URLSearchParams( url.split('?')[1]);
    }
    return new URLSearchParams()
}

useage

// location.href ='http://example.com/user?id=1&age=2'
const params = urlParams(location.href);  //iterater obj
params.get('id') // 1
params.has('id') // true
params.append('id','2')
params.getAll('id')  //  ?["1", "2"]
params.set('id','0')
params.get('id') //  "0"
params.getAll('id') //  ["0"]
params.delete('id')
params.get('id')  // null
params.toString() //"age=2"

references:

原文地址:https://www.cnblogs.com/rosendolu/p/11623065.html

时间: 2024-10-07 09:38:12

URL 参数解析的相关文章

百度URL参数解析

百度URL参数解析 在用Python爬取百度搜索的内容时,发现百度搜索的url非常的长,往往会跟一大段的参数,但其实很多参数都是没有必要的,如同样是搜索java关键字,可以通过 http://www.baidu.com/s?wd=java 如此简单的URL来获取,而下面这个超级复杂的URL也是同样进行了关键字java的搜索: http://www.baidu.com/s?wd=java&rsv_spt=1&rsv_iqid=0xd3c8c51900052eb3&issp=1&

把URL参数解析成一个Json对象

问题:请编写一个JavaScript函数parseQueryString,它的用途是把URL参数解析为一个对象.           eg:var obj=parseQueryString(url); 创建对象的三种形式:        一:                var Person=new Object();                Person.name="Sun";                Person.age=24;        二:         

java 获取url及url参数解析

java  获取url及url参数解析 一.url编码:URLEncoder.encode(userName); 二.url解码: URLDecoder.decode(userName);

五种URL参数解析方法的性能比较

因为在最近项目中需要解析日志中的 URL 的参数,所以我对比了一下五种不同 的 URL 参数解析方法的性能.URL 参数解析方法: httpclient org.apache.http.client.utils.URLEncodedUtils URLEncodedUtils.parse(query, Charset.forName("UTF-8"));jettyUtil org.eclipse.jetty.util.UrlEncoded MultiMapvalues = new Mul

js js获取url及url参数解析

js获取url及url参数解析 一.获取url: var url=window.location.herf; 二.url参数解析: function GetRequest() { var url = location.search; //获取url中"?"符后的字串 var obj= new Object(); if (url.indexOf("?") != -1) { var str = url.substr(1); strs = str.split("

封装一个方法:把URL参数解析为一个对象,来获取地址栏url里面的传递的参数。

URL参数解析 //获取url方法 //window.location.href // function getUrlkey(url){ var params = {}, arr = url.split("?"); if (arr.length <= 1) return params; arr = arr[1].split("&"); for(var i=0, l=arr.length; i<l; i++){ var a = arr[i].spl

URL参数解析方法

这几天遇到这样一个需求,需要在不同页面之前传递参数,一般我们都是通过URL来传递,如下 window.open('test.html?id=123&name=456') 然后在新窗口的时候我们再用window.location.search方法获取?后面的参数内容,但是拿到的内容是"?id=123&name=456"这样的形式,我们还需要进行一系列的字符串处理才能拿到我们需要的信息,这样就比较麻烦一些了,所以我们就基于这个需求封装一个工具方法来把参数后面的内容解析成一个

编写一个参数JavaScript函数parseQueryString,它的用途是把url参数解析为一个对象

var url = "http://www.taobao.com/index.php?key0=0&key1=1&key2=2............."; var obj = parseQueryString(url); function parseQueryString(argu){ var str = argu.split('?')[1]; var result = {}; var temp = str.split('&'); for(var i=0; i

js url参数解析获取

function get_url_parm_list(str){ var params=str.substr(str.indexOf('?')+1); var param_list=[]; while(params.indexOf('=')!=-1){ var ind=params.indexOf('='); var k=params.substr(0,ind); var sp=params.indexOf('&'); if(sp==-1){ var v=params.substr(ind+1)