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

yizhihongxing

浅谈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类和继承 constructor属性

    JavaScript类和继承是面向对象编程的主要概念之一。构造函数是类的重要组成部分之一,通过构造函数我们可以创建新的实例,同时constructor属性则是描述类的属性之一。以下是完整攻略: 一、JS类的创建 JS 类的创建可以使用ES5和ES6进行定义。 在ES5 中,使用构造函数和原型算法来定义类,而在ES6 中,使用class和constructor…

    JavaScript 2023年5月27日
    00
  • javascript与java有什么关系(区别与相似)

    JavaScript和Java这两个词看起来很相似,但它们是两个完全不同的编程语言。在这篇文章中,我们将讨论JavaScript和Java之间的区别和相似之处。 区别 语法不同 JavaScript和Java有完全不同的语法。JavaScript语法更为简单,而Java则需要更多的代码和结构。JavaScript采用的是弱类型变量,因此在声明变量并定义其类型…

    JavaScript 2023年5月27日
    00
  • JavaScript Math.floor方法(对数值向下取整)

    JavaScript Math.floor方法 Math.floor() 方法会返回小于等于所传参数的最大整数。 语法 Math.floor(x) 参数 x:必需。一个数值,将被下舍入为整数。 返回值 返回小于等于 x 的最大整数。 示例1:向下取整 var a = Math.floor(4.3); // 4 var b = Math.floor(9.999…

    JavaScript 2023年5月28日
    00
  • AngularJS 单元测试(一)详解

    下面是对于“AngularJS 单元测试(一)详解”的完整攻略: 什么是单元测试 单元测试是软件开发流程中的一种测试方法,它可以对一个软件系统、组件或单元进行测试,以确认其是否满足设计目标和要求。它可以提供反馈和验证设计过程的正确性。 单元测试的主要目的是在开发过程中检测代码的正确性,及时发现并解决错误。相比手动测试,单元测试可以更早地检测到错误,提高开发效…

    JavaScript 2023年6月10日
    00
  • JavaScript中setMonth()方法的使用详解

    下面是关于“JavaScript中setMonth()方法的使用详解”的完整攻略。 什么是setMonth()方法? setMonth()方法是JavaScript中Date对象原型上的一个方法,用于设置Date对象的月份。它的用法如下: dateObj.setMonth(month[, date]); 其中,month是一个0到11的整数,对应1月到12月…

    JavaScript 2023年6月10日
    00
  • javascript对象的创建和访问

    当我们要处理数据的时候,常常需要使用对象。JavaScript 的对象非常灵活,并且支持动态增加属性、修改属性和删除属性。 JavaScript 对象的创建 JavaScript 对象可以通过以下几种方式进行创建: 直接量法 这是一种创建对象的常用方式,直接将属性和属性值以键值对的形式包含在花括号 { } 中: let person = { name: ‘B…

    JavaScript 2023年5月27日
    00
  • ES6新特性六:promise对象实例详解

    ES6新特性六:promise对象实例详解 Promise对象是ES6新增的一种异步编程解决方案,它解决了异步编程中回调函数嵌套过深、错误处理繁琐等问题。本文将详细介绍Promise对象的创建、状态、方法及使用。 Promise对象的创建 Promise对象是通过new关键字和Promise构造函数创建的,它接受一个函数作为参数,该函数有两个形参resolv…

    JavaScript 2023年6月11日
    00
  • javascript移动开发中touch触摸事件详解

    JavaScript移动开发中touch触摸事件详解 1. 简介 在移动开发中,我们经常需要使用到触摸事件(touch event)。触摸事件是指用户在手机或平板电脑等触摸设备上进行的操作,这些操作包括点击、滑动、缩放等等。 在JavaScript中使用触摸事件可以为移动开发增加更丰富的交互方式,而对于大多数移动设备,touch事件已经成为了与鼠标事件等同的…

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