博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
将url的查询参数解析成字典对象
阅读量:4653 次
发布时间:2019-06-09

本文共 1243 字,大约阅读时间需要 4 分钟。

  这个题目不约而同的出现在了多家公司的面试题中,当然也是因为太过于典型,解决方案无非就是拆字符或者用正则匹配来解决,我个人强烈建议用正则匹配,因为url允许用户随意输入,如果用拆字符的方式,有任何一处没有考虑到容错,就会导致整个js都报错。而正则就没有这个问题,他只匹配出正确的配对,非法的全部过滤掉,简单,方便。

  实现代码:

1、手动解析

function getQueryStringArgs(url){    url = url == null ? window.location.href : url;    var qs = url.substring(url.lastIndexOf("?") + 1);    var args = {};    var items = qs.length > 0 ? qs.split('&') : [];    var item = null;    var name = null;    var value = null;    for(var i=0; i

2、使用正则

function getQueryObject(url) {    url = url == null ? window.location.href : url;    var search = url.substring(url.lastIndexOf("?") + 1);    var obj = {};    var reg = /([^?&=]+)=([^?&=]*)/g;    // [^?&=]+表示:除了?、&、=之外的一到多个字符    // [^?&=]*表示:除了?、&、=之外的0到多个字符(任意多个)    search.replace(reg, function (rs, $1, $2) {        var name = decodeURIComponent($1);        var val = decodeURIComponent($2);        val = String(val);        obj[name] = val;        return rs;    });    return obj;}console.log(getQueryObject('https://www.baidu.com/baidu?tn=monline_3_dg&ie=utf-8&wd=12306%E7%81%AB%E8%BD%A6%E7%A5%A8%E7%BD%91%E4%B8%8A%E8%AE%A2%E7%A5%A8%E5%AE%98%E7%BD%91'));// Object {tn: "monline_3_dg", ie: "utf-8", wd: "12306火车票网上订票官网"}

 

转载于:https://www.cnblogs.com/goloving/p/9292165.html

你可能感兴趣的文章
教程-Win7极速优化20项
查看>>
CF1083B The Fair Nut and String
查看>>
mac上卸载jdk 步骤
查看>>
Old Sorting(转化成单调序列的最小次数,置换群思想)
查看>>
C的|、||、&、&&、异或、~、!运算(转)
查看>>
迷宫城堡(强联通targin)
查看>>
easyUI添加修改tab页(toolbar)
查看>>
JavaScript笔试题
查看>>
Leetcode 969. Pancake Sorting
查看>>
set()集合的概念与一般操作
查看>>
winform - ComboBox_ListView2
查看>>
react中递归生成列表
查看>>
内置函数filter
查看>>
FIREDAC TFDCONNECTION连接ORACLE
查看>>
【LeetCode从零单排】No 114 Flatten Binary Tree to Linked List
查看>>
Effective Go(官方文档)笔记
查看>>
Spring表达式语言SpEL简单介绍
查看>>
NancyFX 第八章 内容协商
查看>>
操蛋的一天
查看>>
20172324 2017-2018-2 《程序设计与数据结构》第八周学习总结
查看>>