使用 reduce 将 Javascript 对象转换为查询字符串

标签 javascript object reduce

我无法申请 reduceObject 以查询字符串格式获取它。

我想要这个:

> var obj = {a: 1, b: "213123", c: null, d:false}
> obj2querystring(obj);
a=1&b=213123&c=null&d=false

到目前为止,我得到的结果是这样的:

Object.keys(obj).reduce(function(prev, curr){
    return prev + '&' + curr + '=' + obj[curr];
}, '');

这给了我:

&a=1&b=213123&c=null&d=false

有没有更简单的方法来实现这一点,而不必在前面加上 initialValue 并稍后删除 &


编辑:这个问题很老了,今天我们可以使用 new URLSearchParams(object).toString(), safely

最佳答案

与其执行 reduce,更简洁的方法是 mapjoin

Object.keys(obj).map(function(x){
    return x + '=' + obj[x];
}).join('&');
  • ma​​p 生成这样的数组:["a=1", "b=213123", "c=null", "d=false"]
  • join 将其转换为查询字符串:a=1&b=213123&c=null&d=false

关于使用 reduce 将 Javascript 对象转换为查询字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32831487/

相关文章:

javascript - 如何通过检查 JavaScript 中的对象是否未定义来将对象插入数组

java - 设置对象中字符串数组中存储的小数的比例

具有 3 个参数的 Java8 stream.reduce() - 获得透明度

javascript - 忽略 package-lock.json 中的某些包

javascript - Angular Production 构建错误 "ERROR in Cannot read property ' toLowerCase' of undefined"

javascript - JavaScript 中惯用的 `Number` 对象到数字文字的转换

Python 将文件系统映射到目录结构 : works, ...但是如何呢?

javascript - 使用 "map"函数返回多个数组

javascript - 滑动面板,如何复制它们?

javascript - 在 backbone.js 中使用全局变量