给定一段 URL 地址截取后面的参数转成对象(key-value形式)

给定一段 URL 地址截取后面的 GET 参数转成对象

有这样一个 URL: http://xxxxrerr.htm?a=1&b=2&c=&d=xxx&e,请写一段 JS 程序提取 URL 中的各个 GET 参数(参数名和参数个数不确定),将其按 key-value形式返回到一个 json 结构中,如 {a: "1", b: "2", c: "", d: "xxx", e: undefined}

// 有这样一个 URL: http://item.taobao.com/item.htm?a=1&b=2&c=&d=xxx&e,请写一段 JS 程序提取 URL 中的各个 GET 参数
// (参数名和参数个数不确定),将其按 key-value形式返回到一个 json 结构中,
// 如 {a: "1", b: "2", c: "", d: "xxx", e: undefined}

// 给定一段 url 地址
let str = 'http://xxxxrerr.htm?a=1&b=2&c=&d=xxx&e'

// 先把字符 ? 后面的字符截取出来
let newStr = str.substr(str.indexOf('?') + 1)

// 通过 reduce 方法进行处理
let newObj = newStr.split('&').reduce((obj, item) => {
  let itemArr = item.split('=') // ['a', '1']
  obj[itemArr[0]] = itemArr[1] // {a: 1}
  return obj
}, {})

console.log(newObj) // {a: '1', b: '2', c: '', d: 'xxx', e: undefined}

还有一种更加帅气的写法

// 给定一段 url 地址
let str = 'http://xxxxrerr.htm?a=1&b=2&c=&d=xxx&e'

// 先把字符 ? 后面的字符截取出来
let newStr = str.substr(str.indexOf('?') + 1)

// 通过 reduce 方法进行处理
let newObj = newStr.split('&').reduce((obj, item) => ((obj[item.split('=')[0]] = item.split('=')[1]), obj), {})

console.log(newObj) // {a: '1', b: '2', c: '', d: 'xxx', e: undefined}
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值