普通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