js解析网址获取需要的数据

/**
 * 获取地址栏内容,返回pathnamearrneed对象
 * @param {Object} len 从第几位开始获取你需要的值
 * @param {Boolean} true 返回的是截取后的数组
 */
function myLocationId(len,boolean) {    
    var pathnamearr = location.pathname.split('/');
    var length = pathnamearr.length;
    pathnamearr[length - 1] = pathnamearr[length - 1].replace('.html', '');
    if(boolean){                
        return pathnamearr;
    }
    len = len ? len : 3;
    var pathnamearrneed = {};
    for(var i = len, arrlenght = length; i < arrlenght; i += 2) {
        pathnamearrneed[pathnamearr[i]] = pathnamearr[i + 1];
    }
    return pathnamearrneed;
}

  不知道有没有宝宝们遇到过这样的问题,后台哥哥说使用 http://域名/网页路径.html?id=1&&cid=1 使用search的地址形式太丑了,要改成 http://域名/网页路径/id/1.html 的形式。

  这时候,宝宝需要用到网页路径传过来的信息,例如 id 什么的,就特别费神,所以就写了个这样的方法,来解析网址,获取需要的内容。

  下面写一下这个函数的意思,以及如何使用:

    1、宝宝在自家公司遇到需要解析的网站路径是这样的  http://域名/网页父级路径/网页子级路径/一级分类/一级分类id/二级分类/二级分类id.html

    2、而宝宝我需要用到的内容是 一级分类id 和 二级分类id ,这时候我们所熟知的 location对象的属性就不能满足需求了,就需要自己进行解析

    3、使用 location.pathname 获取的内容是 /一级分类/一级分类id/二级分类/二级分类id.html  

    4、通过 split('/') 将其分隔成数组,结果为 ['','一级分类','一级分类id’,'二级分类','二级分类id.html'] 

    5、说道这里我想看到宝宝博客的童靴们都明白了吧,该方法需要传参的 length 就代表着 我需要的是 从数组第几项开始是我需要的内容,因为宝宝自家公司一般都是从第三项开始,所以不传的话 默认是从第三位开始

    6、最终得到的结果是一个对象  

        {

          '一级分类':'一级分类id',

          '二级分类':'二级分类id'

        }

修改1:

  增加第二个参数,当传入 true 时 返回的是路径内容数组。

ps:这是本宝宝的第一篇博客,也是记录自己的成长历程,如果有更好的办法来解决这个问题,欢迎交流.....康撒米达~~古玛我~~

学习、交流、记录、编辑一部自己的知识库
原文地址:https://www.cnblogs.com/z-one/p/6097960.html