普通Javascript等效于jQuery.param()

jQuery.param()接受一组键值对,并将其转换为一个字符串,您可以将其用作HTML请求中的查询字符串。 例如,

a = { userid:1, gender:male } 

会被转换为

 userid=1&gender=male 

我正在尝试在Google Apps脚本中调用服务器端的外部API,这需要很长的查询字符串。 我会使用jQuery param函数,但似乎没有简单的方法在Google的服务器端使用jQuery。

你能给我一些实现相同function的简单javascript代码吗?

它的jQuery实现就在这里 ,但我不想通过简单地复制它并删除处理’传统’的代码来跳过任何关键细节。

您也可以使用纯JavaScript执行此操作,但您必须编写更多代码行。 试试这个:

用于测试的HTML代码:

 

要触发的JavaScript onload:

 a = { userid:1, gender: "male", } url = Object.keys(a).map(function(k) { return encodeURIComponent(k) + '=' + encodeURIComponent(a[k]) }).join('&') document.getElementById("test").innerHTML=url 

输出是这样的:

 userid=1&gender=male 

您可以在JSFIDDLE.NET上尝试这个,它可以工作,这里是链接: http : //jsfiddle.net/ert93wbp/

 export function param( params ) { const p = new URLSearchParams; for( const [ key, value ] of Object.entries( params ) ) { p.set( key, String( value ) ); } return p.toString(); } 

@Amaynut的答案很棒。 但我做了一些简化:

 const obj = { userid: 1, gender: 'male' } const params = Object.keys(obj).map((k) => encodeURIComponent(k) + '=' + encodeURIComponent(obj[k])).join('&') 

或者使用es6模块对其进行模块化:

util.js中

 export default { params (obj) { return Object.keys(obj).map((k) => encodeURIComponent(k) + '=' + encodeURIComponent(obj[k])).join('&') } } 

并使用这样的:

 import util from './util' const q = { userid: 1, gender: 'male' } const query = util.params(q) console.log(query) 
 ES6 gives us some nice primitives: // Function that parses an object of string key/value params to build up // a string of url params // requires an object with no nested values export function parseUrlParams(urlParams) { const joinByEquals = (pair) => pair.join('=') const params = Object.entries(urlParams).map(joinByEquals).join('&') if (params) { return `?${params}` } else { return '' } } 

请在此处查看: https : //www.webpackbin.com/bins/-KnpOI6hb1AzTDpN3wS7