[英]Convert Object to Url string parameter with checks of array
我有一个带有一些值作为数组的对象。
let paramObj = {
name: 'title',
properties: [01, 02, 03],
rooms: [01],
city: 'cityname'
}
我想将其转换为这样的 url 参数
http://localhost:8080/endpoint?name=title&properties=01&properties=02&properties=03&rooms=01&city=cityName
我有一些对普通字符串工作正常的东西,但我想检查对象键是否有数组而不是将其转换为多个参数。 这是我的代码
const qs = Object.keys(paramObj)
.map(key => `${key}=${paramObj[key]}`)
.join('&');
您可以使用Array.isArray()
方法,如下面的演示所示。 如果前导零很重要,则数组元素应以字符串格式写入,例如“01”而不是 01。
let paramObj = { name: 'title', properties: [01, 02, 03], rooms: ["01"], city: 'cityname' } const qs = Object.keys(paramObj) .map( key => Array.isArray(paramObj[key]) ? paramObj[key].map(v => `${key}=${v}`).join('&') : `${key}=${paramObj[key]}` ) .join('&'); console.log( qs );
为了将对象转换为合适的字符串以在 URL 查询字符串中使用,您可以使用:
jQuery.param() :创建适合在 URL 查询字符串或 Ajax 请求中使用的数组、普通对象或 jQuery 对象的序列化表示。 如果传递了 jQuery 对象,它应该包含具有名称/值属性的输入元素。
let paramObj = { name: 'title', properties: [01, 02, 03], rooms: [01], city: 'cityname' } let params = $.param(paramObj).replace(/%5B%5D/g, ''); let newurl = 'http://localhost:8080/endpoint?' + params; console.log(newurl);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.