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 相关文章推荐
关于火狐(firefox)及ie下event获取的两种方法
Dec 27 Javascript
jquery图片不完全按比例自动缩小的简单代码
Jul 29 Javascript
js换图片效果可进行定时操作
Jun 09 Javascript
JavaScript组合模式学习要点
Aug 26 Javascript
jquery把int类型转换成字符串类型的方法
Oct 07 Javascript
Vue 实时监听窗口变化 windowresize的两种方法
Nov 06 Javascript
微信小程序使用component自定义toast弹窗效果
Nov 27 Javascript
javascrit中undefined和null的区别详解
Apr 07 Javascript
vue中改变滚动条样式的方法
Mar 03 Javascript
JavaScript写个贪吃蛇小游戏(超详细)
Mar 17 Javascript
vue.js watch经常失效的场景与解决方案
Jan 07 Vue.js
vue递归实现树形组件
Jul 15 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 随机排序广告的实现代码
2011/05/09 PHP
php数组删除元素示例
2014/03/21 PHP
不常用但很实用的PHP预定义变量分析
2019/06/25 PHP
一些相见恨晚的 JavaScript 技巧
2010/04/25 Javascript
javascript五图轮播切换实用版
2012/08/17 Javascript
javascript 控制input只允许输入的各种指定内容
2014/06/19 Javascript
我的Node.js学习之路(二)NPM模块管理
2014/07/06 Javascript
基于javascript、ajax、memcache和PHP实现的简易在线聊天室
2015/02/03 Javascript
javascript实时显示当天日期的方法
2015/05/20 Javascript
在for循环中length值是否需要缓存
2015/07/27 Javascript
JS打字效果的动态菜单代码分享
2015/08/21 Javascript
JavaScript 栈的详解及实例代码
2017/01/22 Javascript
bootstrap基本配置_动力节点Java学院整理
2017/07/14 Javascript
AngularJS 教程及实例代码
2017/10/23 Javascript
微信小程序swiper组件用法实例分析【附源码下载】
2017/12/07 Javascript
nodejs 如何手动实现服务器
2018/08/20 NodeJs
vue+element导航栏高亮显示的解决方式
2019/11/12 Javascript
实例分析JS中的相等性判断===、 ==和Object.is()
2019/11/17 Javascript
在vscode 中设置 vue模板内容的方法
2020/09/02 Javascript
vue实现点击按钮“查看详情”弹窗展示详情列表操作
2020/09/09 Javascript
JavaScript语法约定和程序调试原理解析
2020/11/03 Javascript
Python列表append和+的区别浅析
2015/02/02 Python
全面了解Python环境配置及项目建立
2016/06/30 Python
Mac中升级Python2.7到Python3.5步骤详解
2017/04/27 Python
python实现随机梯度下降(SGD)
2020/03/24 Python
python 将print输出的内容保存到txt文件中
2018/07/17 Python
解决django服务器重启端口被占用的问题
2019/07/26 Python
python numpy实现多次循环读取文件 等间隔过滤数据示例
2020/03/14 Python
python下对hsv颜色空间进行量化操作
2020/06/04 Python
欧洲、亚洲、非洲和拉丁美洲的度假套餐:Great Value Vacations
2019/03/30 全球购物
2014年高考决心书
2014/03/11 职场文书
政风行风评议整改方案
2014/09/15 职场文书
2014广电局实施党的群众路线教育实践活动方案思想汇报
2014/09/22 职场文书
董事长岗位职责
2015/02/13 职场文书
自我推荐信怎么写
2015/03/24 职场文书
浅谈GO中的Channel以及死锁的造成
2022/03/18 Golang