有没有办法转换这个对象:
{
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。
答案 0 :(得分:1)
您可以在Array.prototype.map
阵列上使用Object.keys
:
npm install when --save
使用ES6,这变得更加简洁:
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);
答案 1 :(得分:1)
您可以使用
var myObj ={"lang": "en-us", "episode": 12};
var str = Object.keys(myObj).map(key => key+"="+myObj[key]).join("&");
这是否更具可读性是另一个问题:)
答案 2 :(得分:0)
所有其他答案都完美无缺,
但是我发现您可以将 URLSearchParams
用于相同的事情...
var myObj = {keyOne: 'keyOneValue', keyTwo: 'keyTwoValue'};
var queryParams = new URLSearchParams(myObj).toString();
console.log(queryParams);
// keyOne=keyOneValue&keyTwo=keyTwoValue
见:https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams