JS url查询参数转对象

⏹主要通过以下几个方法完成转换需求

  • new URL()
  • new URLSearchParams()
  • Object.fromEntries()
  • location.search
  • location.href

一. 封装前的测试准备

⏹ 假定存在如下包含参数的url

// 可以通过 location.search 来获取地址栏中的查询参数,可直接得到 ?name=jiafeitian&age=28
const urlStr = "https://api.github.com/users/fengyehong123?name=jiafeitian&age=28";

⏹通过JS原生的方法将查询参数转换为对象

const urlObj = new URL(urlStr /* location.href */);
// 直接得到相应的参数
console.log(urlObj.search);  // ?name=jiafeitian&age=28

// new URL().searchParams 得到的是一个 URLSearchParams 对象
const urlSearchParams = urlObj.searchParams;

// 配合 Object.fromEntries 将查询参数转换为对象
const paramObj = Object.fromEntries(urlSearchParams);
console.log(paramObj);
/*
    {
        "name": "jiafeitian",
        "age": "28"
    }
*/

二. 转换方式1

  • 将url中的查询参数转换为对象的方式封装为方法
const searchParamToObj = (url = location.href) => Object.fromEntries(new URL(url).searchParams);
console.log(searchParamToObj(urlStr));
/*
    {
        "name": "jiafeitian",
        "age": "28"
    }
*/

二. 转换方式2

  • 转换查询参数为对象
const urlParamsToObject = (query) => Array.from(new URLSearchParams(query))
	.reduce((p, [k, v]) => Object.assign({}, p, { [k]: p[k] ? (Array.isArray(p[k]) ? p[k] : [p[k]]).concat(v) : v}), {});
	
// 获取url中的查询参数 项目中可以使用 location.search 来代替
const searchParamStr = new URL(urlStr).search;
console.log(searchParamStr);  // ?name=jiafeitian&age=28

console.log(urlParamsToObject(searchParamStr));
/*
    {
        "name": "jiafeitian",
        "age": "28"
    }
*/
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值