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

Mat*_*ero 2 javascript

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

{
    lang: 'en-us',
    episode: 12
}
Run Code Online (Sandbox Code Playgroud)

到具有以下格式的字符串?

"lang=en-us&episode=12"
Run Code Online (Sandbox Code Playgroud)

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

我可以这样做:

var parameters = [];
for(var prop in obj)
   parameters.push(prop + '=' + obj[prop]);
return parameters.join('&');
Run Code Online (Sandbox Code Playgroud)

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

PS:我不能使用jQuery和它的任何实用功能。解决方案必须是纯 JavaScript。

ssu*_*ube 11

您可以Array.prototype.mapObject.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);
Run Code Online (Sandbox Code Playgroud)

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

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