在不知道JavaScript对象的键的情况下,我如何将…
var obj = {
param1: 'something',
param2: 'somethingelse',
param3: 'another'
}
obj[param4] = 'yetanother';
…到…
var str = 'param1=something¶m2=somethingelse¶m3=another¶m4=yetanother';
...?
在不知道JavaScript对象的键的情况下,我如何将…
var obj = {
param1: 'something',
param2: 'somethingelse',
param3: 'another'
}
obj[param4] = 'yetanother';
…到…
var str = 'param1=something¶m2=somethingelse¶m3=another¶m4=yetanother';
...?
当前回答
export const convertObjToUrlParams = (obj) =>
{
var paramString = '';
for (let key in obj)
{
if (obj[key] !== null && obj[key] !== undefined)
{
paramString += '&';
paramString += key + "=" + obj[key];
}
}
return paramString;
}
输出Ex: &firstName=NoDo&userId=2acf67ed-73c7-4707-9b49-17e78afce42e&email=n@n.dk&phoneNumber=12345678&password=123456
其他回答
export const convertObjToUrlParams = (obj) =>
{
var paramString = '';
for (let key in obj)
{
if (obj[key] !== null && obj[key] !== undefined)
{
paramString += '&';
paramString += key + "=" + obj[key];
}
}
return paramString;
}
输出Ex: &firstName=NoDo&userId=2acf67ed-73c7-4707-9b49-17e78afce42e&email=n@n.dk&phoneNumber=12345678&password=123456
功能性方法。
var kvToParam = R.mapObjIndexed((val, key) => { 返回'&' + key + '=' + encodeURIComponent(val); }); var objToParams = R.compose( R.replace (/^&/, '?'), R.join(”), R.values, kvToParam ); 变量o = { 用户名:“sloughfeg9', 密码:澳大利亚 }; console.log (objToParams(的); < script src = " https://cdnjs.cloudflare.com/ajax/libs/ramda/0.22.1/ramda.min.js " > < / >脚本
一个优雅的例子:(假设你正在运行一个现代的浏览器或节点)
var str = Object.keys(obj).map(function(key) {
return key + '=' + obj[key];
}).join('&');
以及ES2017的等效版本:(感谢Lukas)
let str = Object.entries(obj).map(([key, val]) => `${key}=${val}`).join('&');
注意:如果键/值不是URL编码的,则可能需要使用encodeURIComponent()。
var str = "";
for (var key in obj) {
if (str != "") {
str += "&";
}
str += key + "=" + encodeURIComponent(obj[key]);
}
例如:http://jsfiddle.net/WFPen/
一个有用的代码,当你有数组在你的查询:
var queryString = Object.keys(query).map(key => {
if (query[key].constructor === Array) {
var theArrSerialized = ''
for (let singleArrIndex of query[key]) {
theArrSerialized = theArrSerialized + key + '[]=' + singleArrIndex + '&'
}
return theArrSerialized
}
else {
return key + '=' + query[key] + '&'
}
}
).join('');
console.log('?' + queryString)