node.js中的querystring.parse方法使用说明


Posted in Javascript onDecember 10, 2014

方法说明:

将字符串转成对象。说白了其实就是把url上带的参数串转成数组对象。(看例子就知道咯)

语法:

querystring.parse(str, [sep], [eq], [options])

接收参数:

str                                         欲转换的字符串

sep                                       设置分隔符,默认为 ‘&'

eq                                         设置赋值符,默认为 ‘='

[options]  maxKeys             可接受字符串的最大长度,默认为1000

例子:

querystring.parse('foo=bar&baz=qux&baz=quux&corge')

// returns

{ foo: 'bar', baz: ['qux', 'quux'], corge: '' }

源码:

// Parse a key=val string.

QueryString.parse = QueryString.decode = function(qs, sep, eq, options) {

  sep = sep || '&';

  eq = eq || '=';

  var obj = {};

  if (!util.isString(qs) || qs.length === 0) {

    return obj;

  }

  var regexp = /\+/g;

  qs = qs.split(sep);

  var maxKeys = 1000;

  if (options && util.isNumber(options.maxKeys)) {

    maxKeys = options.maxKeys;

  }

  var len = qs.length;

  // maxKeys <= 0 means that we should not limit keys count

  if (maxKeys > 0 && len > maxKeys) {

    len = maxKeys;

  }

  for (var i = 0; i < len; ++i) {

    var x = qs[i].replace(regexp, '%20'),

        idx = x.indexOf(eq),

        kstr, vstr, k, v;

    if (idx >= 0) {

      kstr = x.substr(0, idx);

      vstr = x.substr(idx + 1);

    } else {

      kstr = x;

      vstr = '';

    }

    try {

      k = decodeURIComponent(kstr);

      v = decodeURIComponent(vstr);

    } catch (e) {

      k = QueryString.unescape(kstr, true);

      v = QueryString.unescape(vstr, true);

    }

    if (!hasOwnProperty(obj, k)) {

      obj[k] = v;

    } else if (util.isArray(obj[k])) {

      obj[k].push(v);

    } else {

      obj[k] = [obj[k], v];

    }

  }

  return obj;

};
Javascript 相关文章推荐
探索angularjs+requirejs全面实现按需加载的套路
Feb 26 Javascript
Bootstrap轮播插件简单使用方法介绍
Jun 21 Javascript
javascript运算符——逻辑运算符全面解析
Jun 27 Javascript
JS中substring与substr的用法
Nov 16 Javascript
微信小程序 实战程序简易新闻的制作
Jan 09 Javascript
BootStrap栅格系统、表单样式与按钮样式源码解析
Jan 20 Javascript
PHP7新特性简述
Jun 11 Javascript
微信小程序实现图片压缩功能
Jan 26 Javascript
Vuejs在v-for中,利用index来对第一项添加class的方法
Mar 03 Javascript
JS封装的模仿qq右下角消息弹窗功能示例
Aug 22 Javascript
微信小程序实现简单跑马灯效果
May 26 Javascript
JS PHP字符串截取函数实现原理解析
Aug 29 Javascript
node.js中的url.resolve方法使用说明
Dec 10 #Javascript
node.js中的url.parse方法使用说明
Dec 10 #Javascript
node.js中的url.format方法使用说明
Dec 10 #Javascript
node.js中的console.assert方法使用说明
Dec 10 #Javascript
深入分析JSONP跨域的原理
Dec 10 #Javascript
node.js中的console.dir方法使用说明
Dec 10 #Javascript
node.js中的console.error方法使用说明
Dec 10 #Javascript
You might like
php中使用DOM类读取XML文件的实现代码
2011/12/14 PHP
使用gd库实现php服务端图片裁剪和生成缩略图功能分享
2013/12/25 PHP
PHP开发中常用的十个代码样例
2016/02/02 PHP
html数组字符串拼接的最快方法
2009/09/16 Javascript
jquery利用event.which方法获取键盘输入值的代码
2011/10/09 Javascript
javascript将url中的参数加密解密代码
2014/11/17 Javascript
jQuery类选择器用法实例
2014/12/23 Javascript
jQuery根据用户电脑是mac还是pc加载对应样式的方法
2015/06/26 Javascript
基于javascript实现图片左右切换效果
2016/01/25 Javascript
三种带箭头提示框总结实例
2016/06/14 Javascript
JavaScript实现简单的拖动效果
2016/07/02 Javascript
基于Bootstrap 3 JQuery及RegExp的表单验证功能
2017/02/16 Javascript
webpack构建react多页面应用详解
2017/09/15 Javascript
Vue利用History记录上一页面的数据方法实例
2018/11/02 Javascript
详解Vue中使用Axios拦截器
2019/04/22 Javascript
jQuery实现动态生成年月日级联下拉列表示例
2019/05/11 jQuery
vue element table中自定义一些input的验证操作
2020/07/18 Javascript
nuxt 自定义 auth 中间件实现令牌的持久化操作
2020/11/05 Javascript
python获取局域网占带宽最大3个ip的方法
2015/07/09 Python
django_orm查询性能优化方法
2018/08/20 Python
python 使用plt画图,去除图片四周的白边方法
2019/07/09 Python
Python生命游戏实现原理及过程解析(附源代码)
2019/08/01 Python
Python 实例方法、类方法、静态方法的区别与作用
2019/08/14 Python
深入浅析Python 中的sklearn模型选择
2019/10/12 Python
Django 框架模型操作入门教程
2019/11/05 Python
Python自带的IDE在哪里
2020/07/01 Python
python+playwright微软自动化工具的使用
2021/02/02 Python
麦德龙官方海外旗舰店:德国麦德龙超市
2017/12/23 全球购物
蒙蒂塞罗商店:Monticello Shop
2018/11/25 全球购物
十岁生日同学答谢词
2014/01/19 职场文书
实验教师岗位职责
2014/02/13 职场文书
报表员工作失误检讨书范文
2014/09/19 职场文书
小学数学继续教育研修日志
2015/11/13 职场文书
三严三实·严以律己心得体会
2016/01/13 职场文书
分享15个Webpack实用的插件!!!
2021/03/31 Javascript
Go 自定义package包设置与导入操作
2021/05/06 Golang