window.location.herf获取到路径,然后处理携带的参数,将?name=“张三“&age=“18“改为{name:张三,age:18}

window.location.herf获取到路径,然后处理携带的参数,将?name=“张三”&age="18"改为{name:张三,age:18}

在这里插入图片描述
直接看代码吧

感觉这里封装的处理单双引号那里感觉有些多余,一般情况下?后面携带的参数都是双引号包裹的吧

欢迎留言讨论

       const queryString = () => {
            // 将路径以?分割成数组拿到?后面的参数
            const path = decodeURI(window.location.href).split('?')[1]
            // 定义处理后的参数对象,最终将参数以key value的形式返回
            const queryString = {}
            // 判断参数是否有多个 如name='张三'&age='18'
            if (path.includes('&')) {
                // 将多参数以&分割成数组然后遍历
                const tempArr = path.split('&')
                tempArr.forEach((item) => {
                    // 将每个参数以=分割如 name='张三' ==> [name,"'张三'"]
                    const itemArr = item.split('=')
                    const key = itemArr[0]
                    const tempValue = itemArr[1]
                    // 将'张三'的单引号去掉 ==> 张三
                    if (tempValue.includes("'")) {
                        const value = tempValue.replace(/^'|'$/g,'')
                        // 给queryString对象赋值 将最初的[name,'张三'] ==> {name: '张三'}
                        queryString[key] = value
                    }
                    // 将"张三"的双引号去掉 ==> 张三
                    if (tempValue.includes('"')) {
                        const value = tempValue.replace(/^"|"$/g,'')
                        queryString[key] = value
                    }
                })
            }else {
                // 参数中不包含&,说明只有一个键值对直接用=分割成数组之后赋值成对象
                const key = path.split('=')[0]
                const tempValue = path.split('=')[1]
                if(tempValue.includes("'")) {
                    const value = tempValue.replace(/^'|'$/g,'')
                    queryString[key] = value
                }
                if (tempValue.includes('"')) {
                    const value = tempValue.replace(/^"|"$/g,'')
                    queryString[key] = value
                }
            }
            console.log('处理后的参数', queryString)
            return queryString
        }
        const query = queryString()
        console.log('处理后的参数', query) // {name: '张三', age: 18}

方法写完之后想起来了有qs
服了自己了
啊啊啊啊啊啊

npm install qs

let url = 'http://item.taobao.com/item.htm?name=张三&age=18;
let data = qs.parse(url.split('?')[1]);

// data的结果是
{
    name: '张三',
    age: 18
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jieyucx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值