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实现div阴影效果示例代码
Sep 16 Javascript
JQuery弹出炫丽对话框的同时让背景变灰色
May 22 Javascript
基于Jquery+Ajax+Json实现分页显示附效果图
Jul 30 Javascript
JavaScript中number转换成string介绍
Dec 31 Javascript
javascript正则表达式之search()用法实例
Jan 19 Javascript
js Canvas绘制圆形时钟教程
Feb 06 Javascript
微信小程序实现点击按钮移动view标签的位置功能示例【附demo源码下载】
Dec 06 Javascript
Vue-cli Eslint在vscode里代码自动格式化的方法
Feb 23 Javascript
父组件中vuex方法更新state子组件不能及时更新并渲染的完美解决方法
Apr 25 Javascript
React Native日期时间选择组件的示例代码
Apr 27 Javascript
详解extract-text-webpack-plugin 的使用及安装
Jun 12 Javascript
vue封装数字翻牌器
Apr 20 Vue.js
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中冒号、endif、endwhile、endfor使用介绍
2010/04/28 PHP
一些php技巧与注意事项分析
2011/02/03 PHP
解析使用substr截取UTF-8中文字符串出现乱码的问题
2013/06/20 PHP
php中引用符号(&amp;)的使用详解
2013/11/13 PHP
php中对象引用和复制实例分析
2019/08/14 PHP
Yii2框架中一些折磨人的坑
2019/12/15 PHP
JavaScript.The.Good.Parts阅读笔记(二)作用域&amp;闭包&amp;减缓全局空间污染
2010/11/16 Javascript
页面只能打开一次Cooike如何实现
2012/12/04 Javascript
jQuery中:input选择器用法实例
2015/01/03 Javascript
JavaScript插件化开发教程 (四)
2015/01/27 Javascript
angularJS中router的使用指南
2015/02/09 Javascript
Bootstrap每天必学之按钮(Button)插件
2016/04/25 Javascript
20分钟成功编写bootstrap响应式页面 就这么简单
2016/05/12 Javascript
基于jQuery实现歌词滚动版音乐播放器的代码
2016/09/17 Javascript
JavaScript中apply方法的应用技巧小结
2016/09/29 Javascript
JS判断是否为JSON对象及是否存在某字段的方法(推荐)
2016/11/29 Javascript
Jquery删除css属性的简单方法
2016/12/04 Javascript
Bootstrap弹出框(Popover)被挤压的问题小结
2017/07/11 Javascript
vue学习教程之带你一步步详细解析vue-cli
2017/12/26 Javascript
TypeScript之调用栈的实现
2019/12/31 Javascript
[02:51]2014DOTA2 TI小组赛总结中国军团全部进军钥匙球馆
2014/07/15 DOTA
Python中的包和模块实例
2014/11/22 Python
Python 中pandas.read_excel详细介绍
2017/06/23 Python
Python实现的微信好友数据分析功能示例
2018/06/21 Python
Django时区详解
2019/07/24 Python
python join方法使用详解
2019/07/30 Python
python自动化测试无法启动谷歌浏览器问题
2019/10/10 Python
对tensorflow 中tile函数的使用详解
2020/02/07 Python
新西兰演唱会和体育门票网站:Ticketmaster新西兰
2017/10/07 全球购物
澳大利亚领先的武术用品和健身器材供应商:SMAI
2019/03/24 全球购物
学员自我鉴定
2014/03/19 职场文书
计算机专业自荐信
2014/05/24 职场文书
元旦联欢会策划方案
2014/06/11 职场文书
python中tkinter复选框使用操作
2021/11/11 Python
Python装饰器详细介绍
2022/03/25 Python
mysql sql常用语句大全
2022/06/21 MySQL