从 Node.js 中的两个 JavaScript 对象对查询字符串中的参数进行排序
Sorted parameters in query string from two JavaScript object in Node.js
使用 querystring
、qs
等从两个 JavaScript 对象接收排序参数查询字符串的最佳方法是什么?
我正在将属性从 obj2 添加到 obj1:
for (var attrname in obj2) { obj1[attrname] = obj2[attrname]; }
obj1
最终会得到一堆属性。
stringify
obj1
后,我需要查询字符串中的所有参数按键的字母顺序排序:
a=v1&b=v2&c=v3
由于对象属性无法排序(它们的顺序未指定),因此需要将它们放在数组中。
您可以创建一个处理键值对的对象:
function KeyValue(key, value) {
this.key = key;
this.value = value;
}
KeyValue.prototype = {
toString: function() {
return encodeURIComponent(this.key) + '=' + encodeURIComponent(this.value);
}
};
通过从对象中的属性创建 KeyValue
对象的数组,然后可以按键对它们进行排序,只需使用 join
即可创建查询字符串:
var obj1 = { x: '1 2 3', b: 42, f: 'x<y' };
var query = [];
for (var key in obj1) {
if (obj1.hasOwnProperty(key)) {
query.push(new KeyValue(key, obj1[key]));
}
}
query.sort(function(a, b){ return a.key < b.key ? -1 : 1 });
var queryString = query.join('&');
变量queryString
现在包含 b=42&f=x%3Cy&x=1%202%203
。
演示:http://jsfiddle.net/915wt4j4/
相关文章:
- 如何有效地将游戏数据存储在URL查询字符串中
- 从查询字符串参数推断出正确的数据类型
- AngularJS:获取链接中没有哈希的查询字符串值
- AngularJS,如何更改查询字符串
- Datatables查询url字符串:需要regex来修复url解析
- 如何将activeadmin查询字符串传递给batch_action
- 如何从查询字符串中的输入字段发回文本
- Django在使用AJAX时没有接收到新的查询字符串
- 使用查询字符串方法清除浏览器缓存
- 用于刷新的Javascript更改查询字符串
- 我想将查询字符串变量添加到JSON名称/值对中
- 将查询字符串值从页面传递 asp.net 到 iframe
- jqueryajax生成查询字符串,如果未定义则不通过
- 如何将查询字符串传递到HTML框架
- iron路由器将参数添加到字符串中,并添加一个查询
- 使用字符串查询此选择器
- 替换URL'中的字符串查询;s与Javascript(有条件)
- 基于匹配或正则表达式的查询字符串查询Mongo
- 简单json字符串查询
- 向Django传递一个布尔字符串查询