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 相关文章推荐
jQuery中:first-child选择器用法实例
Dec 31 Javascript
bootstrap布局中input输入框右侧图标点击功能
May 16 Javascript
浅谈js内置对象Math的属性和方法(推荐)
Sep 19 Javascript
js HTML5上传示例代码完整版
Oct 10 Javascript
javascript中的隐式调用
Feb 10 Javascript
angular6.x中ngTemplateOutlet指令的使用示例
Aug 09 Javascript
小程序自定义日历效果
Dec 29 Javascript
JS实现li标签的删除
Apr 12 Javascript
Vue中使用matomo进行访问流量统计的实现
Nov 05 Javascript
JS实现滑动插件
Jan 15 Javascript
基于openlayers实现角度测量功能
Sep 28 Javascript
vue 数据遍历筛选 过滤 排序的应用操作
Nov 17 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 来访国内外IP判断代码并实现页面跳转
2009/12/18 PHP
将博客园(cnblogs.com)数据导入到wordpress的代码
2013/01/06 PHP
浅谈PHP中单引号和双引号到底有啥区别呢?
2015/03/04 PHP
如何批量清理系统临时文件(语言:C#、 C/C++、 php 、python 、java )
2016/02/01 PHP
php将服务端的文件读出来显示在web页面实例
2016/10/31 PHP
php生成条形码的图片的实例详解
2017/09/13 PHP
基于SVG的web页面图形绘制API介绍及编程演示
2013/06/28 Javascript
Bootstrap布局组件教程之Bootstrap下拉菜单
2016/06/12 Javascript
拖动时防止选中
2017/02/03 Javascript
微信小程序 动态绑定数据及动态事件处理
2017/03/14 Javascript
浅谈es6语法 (Proxy和Reflect的对比)
2017/10/24 Javascript
js定时器实现倒计时效果
2017/11/05 Javascript
Angular2 自定义表单验证器的实现方法
2018/12/14 Javascript
vue.js实现左边导航切换右边内容
2019/10/21 Javascript
JS实现音乐导航特效
2020/01/06 Javascript
Python中关于Sequence切片的下标问题详解
2017/06/15 Python
解决webdriver.Chrome()报错:Message:'chromedriver' executable needs to be in Path
2019/06/12 Python
python开发之anaconda以及win7下安装gensim的方法
2019/07/05 Python
python自动化测试无法启动谷歌浏览器问题
2019/10/10 Python
浅谈django channels 路由误导
2020/05/28 Python
CSS Grid布局教程之什么是网格布局
2014/12/30 HTML / CSS
ALDO加拿大官网:加拿大女鞋品牌
2018/12/22 全球购物
华美博弈C/VC工程师笔试试题
2012/07/16 面试题
国际贸易毕业生求职信范文
2014/02/21 职场文书
保安队长职务说明书
2014/02/23 职场文书
安全教育感言
2014/03/04 职场文书
法人代表委托书
2014/04/04 职场文书
社会调查研究计划书
2014/05/01 职场文书
国际贸易专业自荐信
2014/06/10 职场文书
计划生育证明书写要求
2014/09/17 职场文书
车辆年审委托书范本
2014/09/18 职场文书
个人自查自纠材料
2014/10/14 职场文书
本科毕业论文致谢词
2015/05/14 职场文书
班干部竞选演讲稿(精选5篇)
2019/09/24 职场文书
PostgreSQL 插入INSERT、删除DELETE、更新UPDATE、事务transaction
2022/04/12 PostgreSQL
Apache自带的ab压力测试工具的实现
2022/07/23 Servers