javascript - 在一行中将对象映射到 key=value 字符串

标签 javascript

有没有办法转换这个对象:

{
    lang: 'en-us',
    episode: 12
}

转换为具有以下格式的字符串?

"lang=en-us&episode=12"

很像将对象映射到查询字符串,其中每个属性都是一个查询参数。

我可以这样做:

var parameters = [];
for(var prop in obj)
   parameters.push(prop + '=' + obj[prop]);
return parameters.join('&');

但我一直在寻找单线解决方案。这可能吗?

PS:我无法使用 jQuery 及其任何实用函数。该解决方案必须采用纯 JavaScript。

最佳答案

您可以使用Array.prototype.map关于 Object.keys数组:

var data = {"lang": "en-us", "episode": 12};
var str = Object.keys(data).map(function (key) { 
  return "" + key + "=" + data[key]; // line break for wrapping only
}).join("&");
console.log(str);

使用 ES6,这变得更加简洁:

var data = {"lang": "en-us", "episode": 12};
var str = Object.keys(data).map(key => `${key}=${data[key]}`).join("&");
console.log(str);

关于javascript - 在一行中将对象映射到 key=value 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32464948/

相关文章:

javascript - 如何从Json文件中以 Angular 填充选择

javascript - Typescript 中的工厂函数使用和不使用 new 关键字声明文件

javascript - 在 PhantomJS 中评估似乎不起作用

javascript - 在 HTML 末尾或 "onload"处初始化 JS 组件?

javascript - 如何使用传单markercluster spiderfied事件

javascript - 每次遍历时清除 For 循环内的 For 循环内容

javascript - 查找先前通过 window.open 打开的窗口

javascript - 为什么图像数组不能在 HTML5 Canvas 中绘制?

javascript - ng-change 函数不更新 ng-model 值

javascript - 如何在 Firefox 扩展程序的新选项卡中打开 URL?