js实现一个函数,可解析输入的 URL 中的 Query 参数

eg1:直接进行拆分

    <script>
		function analysis(url) {
            let str = url.split('?')[1].replace(/=/g, ':')
            return str.split('&').join(',')
        }
        let url = 'http://www.aaa?a=1&b=2';
        console.log(analysis(url)); 
    script>

效果:
在这里插入图片描述
①url.split(‘?’)
拆解得到 [‘http://www.aaa’, ‘a=1&b=2’]
②url.split(‘?’)[1].replace(/=/g, ‘:’)
取出数组中的字符串 ’a=1&b=2‘,进行替换操作
注意:
replace(),操作对象一般是 字符串,图中正则表达式 /=/g 是为了 替换字符串中的所有 ’=‘,
完成替换以后得到 ,‘a:1&b:2’
③str.split(‘&’)
再次切分开,得到 [‘a:1’, ‘b:2’]
④用join(‘’,)
将数组转变成字符串,并用 逗号 隔开

eg2: 利用空对象 ,然后添加成员进去

<script>
        function analysis(url) {
            let obj = {}
            let index = url.indexOf('?') + 1
            let arr = url.substr(index).split('&')
            for (let i = 0; i < arr.length; i++) {
                let brr = arr[i].split("=")
                obj[brr[0]] = brr[1]
            }
            return obj
        }
        console.log(analysis('http://www.aaa?a=1&b=2'));
script>

效果:
在这里插入图片描述
①let index = url.indexOf(‘?’) + 1
得到url中第一个query参数开始的下标
②url.substr(index).split(‘&’)
将分割得到的 a=1&b=2 拆分,得到[‘a=1’,‘b=2’]
③遍历a=1,b=2,分别进行符号分割 arr[i].split(“=”),接着再以键值对形式添加到对象obj,
obj[brr[0]] = brr[1]。
eg: [‘a’,‘1’ ] , obj[brr[0]] = brr[1] 即 obj[a]=‘1’

你可能感兴趣的:(js,前端,javascript)