将url的查询参数解析成字典对象

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

实现代码:

function getQueryObject(url){
    url = url == null? window.location.href : url;
    var search = url.substring(url.lastIndexOf("?") + 1);
    var obj = {};
    var reg = /([^?&=]+)=([^?&=]*)/g;
    search.replace(reg,function(rs,$1,$2){
        var name = decodeURIComponent($1);
        var val = decodeURIComponent($2);
        var = String(val);
        obj[name] = val;
        return rs;
    });
    return obj;
}

推荐阅读更多精彩内容

  • 初衷:看了很多视频、文章,最后却通通忘记了,别人的知识依旧是别人的,自己却什么都没获得。此系列文章旨在加深自己的印...
    DCbryant阅读 3,115评论 0 19
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 128,907评论 18 137
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 164,087评论 24 696
  • 阅读本文前置条件:已经掌握如何下载安装git和关联github 第一步:fork到自己的github 登陆gith...
    九泰修行阅读 15,042评论 1 3
  • 等到再次醒来时,已经是快中午了。爷爷奶奶都不在家。猫吉下床洗脸刷牙后,从蒸锅里拿出还带着余温的红豆沙包和糖心蛋吃。...
    littlecool阅读 165评论 0 0
  • “胃痛……”“哗啦啦啦啦” “雨好像越来越大了……” 我心里想着,不由得加快了脚步。没有一点点防备,从琴房走出来,...
    布丁补阅读 185评论 1 1
  • 在一个村子里有一个年轻人,这个年轻人极其优秀,可是他有一个致命的缺点:经常对别人出言不逊。他的父母和朋友总是劝他,...
    世事难料i阅读 320评论 0 0