繁体   English   中英

使用数组检查将对象转换为 Url 字符串参数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM