浅谈javascript的url参数parse和build函数

浅谈JavaScript的URL参数parse和build函数

在编写JavaScript的时候,我们经常需要操作URL链接中的参数。下面我们来看一下如何使用JavaScript中的URL参数parse和build函数来处理URL链接中的参数。

URL参数parse函数

URL参数parse函数是用来将URL链接中查询字符串部分解析成一个JavaScript对象。具体使用方式如下:

function parse(query) {
    let result = {};
    query = query.trim().replace(/^(\?|#|&)/, '');
    if (!query) {
        return result;
    }
    query.split('&').forEach((param) => {
        let parts = param.replace(/\+/g, ' ').split('=');
        let key = decodeURIComponent(parts.shift());
        let value = parts.length > 0 ? decodeURIComponent(parts.join('=')) : null;
        if (!result.hasOwnProperty(key)) {
            result[key] = value;
        }
        else if (Array.isArray(result[key])) {
            result[key].push(value);
        }
        else {
            result[key] = [result[key], value];
        }
    });
    return result;
}

以上代码会将查询字符串转换为JavaScript对象。其中,参数query是URL链接中的查询字符串部分(不包括问号)。

URL参数build函数

URL参数build函数的作用是将一个JavaScript对象转换为查询字符串(即查询参数)形式。具体使用方式如下:

function build(obj) {
    return Object.keys(obj).map((key) => {
        let values = obj[key];
        if (Array.isArray(values)) {
            return values.map((value) => {
                return `${encodeURIComponent(key)}=${encodeURIComponent(value)}`;
            }).join('&');
        }
        else {
            return `${encodeURIComponent(key)}=${encodeURIComponent(values)}`;
        }
    }).join('&');
}

以上代码会将输入的JavaScript对象转换成查询参数的形式。其中,参数obj是一个包含键值对的JavaScript对象。

示例

示例一:

在URL链接中添加查询参数“name=张三”:

let baseUrl = 'http://www.example.com/index.html';
let query = { name: '张三' };
let queryString = build(query);
let url = `${baseUrl}?${queryString}`;
console.log(url);

结果为:http://www.example.com/index.html?name=%E5%BC%A0%E4%B8%89

接下来我们解析这个URL链接:

let parsedQuery = parse(queryString);
console.log(parsedQuery);

结果为:{name: "张三"}

示例二:

在URL链接中添加多个相同键名的查询参数:

let baseUrl = 'http://www.example.com/index.html';
let query = { name: ['张三', '李四'] };
let queryString = build(query);
let url = `${baseUrl}?${queryString}`;
console.log(url);

结果为:http://www.example.com/index.html?name=%E5%BC%A0%E4%B8%89&name=%E6%9D%8E%E5%9B%9B

接下来我们解析这个URL链接:

let parsedQuery = parse(queryString);
console.log(parsedQuery);

结果为:{name: ["张三", "李四"]}

通过以上两个示例,我们可以总结出使用JavaScript中的URL参数parse和build函数的基本方法,以及它们的使用场景和效果。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:浅谈javascript的url参数parse和build函数 - Python技术站

(0)
上一篇 2023年6月11日
下一篇 2023年6月11日

相关文章

  • Javascript级联下拉菜单以及AJAX数据验证核心代码

    Javascript级联下拉菜单以及AJAX数据验证都是在网页开发中会用到的技术,其作用分别是实现前端的交互体验和安全性验证。下面,我将为您提供完整的攻略。 Javascript级联下拉菜单 1. HTML结构 下拉菜单通常是由HTML的标签实现的,因此我们先来构建HTML的结构。 <label for="province">…

    JavaScript 2023年6月10日
    00
  • Js实现Base64编码与解码

    Js实现Base64编码与解码的完整攻略如下: Base64编码与解码 Base64是一种用64种字符来表示二进制数据的编码方式。它常用于在URL、Cookie、网页传输等场合下,将原始数据转换为纯文本的形式来进行传输或存储。在JavaScript中,可以通过自带的atob和btoa函数来实现Base64的编解码。 Base64编码 在JavaScript中…

    JavaScript 2023年5月19日
    00
  • Jquery 一次处理多个ajax请求的代码

    如果需要同时处理多个ajax请求,Jquery提供了一些方便的解决方案。 方案一:使用Jquery的when()方法 当需要同时处理多个ajax请求时,可以使用Jquery的when()方法。该方法接受多个deferred对象,使所有的deferred对象完成时返回一个回调函数。 示例代码: var jqXHR1 = $.ajax(‘/api/url1’);…

    JavaScript 2023年6月11日
    00
  • Web Animations API实现一个精确计时的时钟示例

    要实现一个精确计时的时钟示例,我们可以使用Web Animations API。这项API可以让我们通过JavaScript来控制CSS动画,而且可以精确定时。下面是实现的步骤: 步骤一:编写HTML代码 编写一个包含时钟的div元素和三个子元素的HTML结构,分别对应时针、分针和秒针。 <div class="clock">…

    JavaScript 2023年6月11日
    00
  • javascript实现阻止iOS APP中的链接打开Safari浏览器

    要在iOS APP中实现阻止链接打开Safari浏览器的功能,可以通过以下方法实现: 1. 使用JavaScript 通过JavaScript代码可以控制链接的行为,让其在当前页面打开,而不是打开一个新的Safari浏览器页面。具体的代码实现如下: // 拦截所有超链接打开 safari document.addEventListener(‘click’, …

    JavaScript 2023年6月11日
    00
  • 前端编码规范(3)JavaScript 开发规范

    前端编码规范对于一个团队而言是非常重要的,它有助于提高代码的可阅读性、可维护性,并能够帮助团队成员之间保持协同配合。本文主要讲解 JavaScript 开发规范,下面将详细介绍该规范的内容。 1. 变量与常量命名规范 在 JavaScript 开发中,变量与常量命名应当遵循以下规范: 变量和常量名应该基于语义而非单词缩写 全局变量使用 全大写常量 的方式定义…

    JavaScript 2023年5月18日
    00
  • nicedit 轻量级编辑器 使用心得

    Nicedit 轻量级编辑器使用心得 Nicedit是一款轻量级的富文本编辑器,它使用简单,易于集成在任何项目中。在本篇文章中,我们将深入探讨Nicedit的使用,包括基本使用、自定义设置和集成到网站中的过程。 基本使用 Nicedit的基本使用非常容易,只需要在HTML文件中引入相关的JS和CSS文件,然后在页面中添加一个div元素作为编辑器即可: &lt…

    JavaScript 2023年6月10日
    00
  • ECMAScript modules规范示例详解

    下面我来详细讲解一下“ECMAScript modules规范示例详解”的完整攻略。 什么是ECMAScript modules规范 ECMAScript modules规范是一种JavaScript模块化的规范,它从ES6开始被引入,并且已成为JavaScript语言中的模块标准。它提供了一种将JavaScript代码封装并重用的方法,使得代码更加可维护和…

    JavaScript 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部