获取Url中的参数

一、将Url参数变成对象

思路:用正则将参数变成JSON字符串,然后再解析成对象(只考虑简单情况,不包括同名参数)。

实现:

let sUrl = 'www.baidu.com?a=1&b=2&c=3&d=4'

function serializeUrlParam(sUrl) {
	let indexStart = sUrl.indexOf('?')
	if(indexStart==-1){return {}};
	let k  = sUrl.slice(indexStart+1);
	let x = k.replace(/&/g, '","').replace(/=/g, '":"');
	let y = '{"' + x + '"}';
	
	return JSON.parse(y);
}

 

二、获取 url 中的参数(?后,#后前)复杂版:

  1. 指定参数名称,返回该参数的值 或者 空字符串
  2. 不指定参数名称,返回全部的参数对象 或者 {}
  3. 如果存在多个同名参数,则返回数组
function getUrlParam(sUrl, sKey) {
   
    //let  k =location.search?location.search.slice(1):'';

    let index = sUrl.indexOf('?');
    let index1 = sUrl.indexOf('#')>0?sUrl.indexOf('#'):sUrl.length;
    let k = sUrl.slice(index+1, index1);

    let y = k.split('&');
    let p = {};
    y.forEach(function(i){

        let j = i.indexOf('='),
            m = i.slice(0,j)
            n = i.slice(j+1)

        if(p[m]){
            if(typeof(p[m])!='object'){
                let arr =[];
                arr.push(p[m]);
                arr.push(n);
                p[m] = arr

            }else{
                p[m].push(n)
            }


        }else{
            p[m]=n;
        }

    })
    
    return sKey?(p[sKey]?p[sKey]:''):p
    
}

测试结果:
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值