将对象转换成params

json2params(json, slice = '&') {
return Object.keys(json)
.reduce((acc, item) => {
return String(acc) + item + '=' + json[item] + slice;
}, '')
.slice(0, -1);
}

转载于:https://www.cnblogs.com/aisiqi-love/p/11394351.html

### JavaScript对象转换为 URL 查询字符串 在 JavaScript 中,可以使用自定义函数来实现将对象转换为 URL 查询字符串的功能。以下是基于提供的引用内容以及标准方法的解释。 #### 方法一:手动实现 `serialize` 函数 可以通过遍历对象属性并将其键值对拼接成查询字符串的形式完成此操作: ```javascript function serialize(obj) { var str = []; for (var p in obj) { if (obj.hasOwnProperty(p)) { str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p])); } } return str.join("&"); } ``` 上述代码通过 `for...in` 循环迭代对象的所有可枚举属性,并利用 `encodeURIComponent` 对键和值分别进行编码处理[^1]。最终返回的结果是一个由键值对组成的查询字符串形式的数据。 #### 示例用法 假设有一个如下所示的对象: ```javascript const data = { name: "John Doe", age: 30, city: "New York" }; console.log(serialize(data)); // 输出: name=John%20Doe&age=30&city=New%York ``` --- #### 方法二:解析已有的查询字符串到对象再反向操作 如果需要从现有的查询字符串重新构建对象或者验证其结构,则可以参考以下方式: ```javascript var parsedQuery = (function(q, u, e, r, y) { for (r = 0; r < q.length; r++) { y = q[r].split('='); u[e(y[0])] = e(y[1]); } return u; })(location.search.substr(1).split('&'), {}, decodeURIComponent); ``` 这段代码展示了如何将当前页面中的查询参数(即 `window.location.search` 的部分)解析回一个对象[^2]。虽然它主要用于解码而非编码,但也可以作为逆过程的一部分用于学习目的。 --- #### 使用现代浏览器内置 API (`URLSearchParams`) 除了手写逻辑外,在支持 ES6 或更高版本语法环境下的项目里推荐优先考虑原生类库的支持功能——比如 **`URLSearchParams`** 接口提供了更简洁的方法来进行相同的操作: ```javascript function objectToQueryString(obj) { const params = new URLSearchParams(); Object.keys(obj).forEach(key => params.append(key, obj[key])); return params.toString(); } // 测试数据 const testObj = { foo: 'bar', baz: ['qux', 'quux'] }; console.log(objectToQueryString(testObj)); // 结果类似于: foo=bar&baz=qux&baz=quux ``` 这种方法不仅更加语义化而且兼容性强,适合大多数实际应用场景需求[^5]。 --- ### 总结 无论是采用传统的循环加拼接还是借助现代化工具如 `URLSearchParams`, 都能够有效地解决把 JSON 格式的对象转化为适配 HTTP 请求所需的 GET 参数列表这一常见任务。具体选择取决于目标用户的开发习惯和技术栈偏好等因素影响。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值