#javascript #jquery
#javascript #jquery
Вопрос:
У меня есть объект с некоторыми значениями в виде массивов.
let paramObj = {
name: 'title',
properties: [01, 02, 03],
rooms: [01],
city: 'cityname'
}
Я хочу преобразовать его в параметры URL следующим образом
http://localhost:8080/endpoint?name=titleamp;properties=01amp;properties=02amp;properties=03amp;rooms=01amp;city=cityName
У меня есть кое-что, что отлично работает для обычных строк, но я хочу проверить, имеет ли ключ объекта массив, чем преобразовывать его в несколько параметров. вот мой код
const qs = Object.keys(paramObj)
.map(key => `${key}=${paramObj[key]}`)
.join('amp;');
Комментарии:
1. Что мешает вам проверять наличие массива?
2. Привет, я новичок, я не знаю, как это сделать в приведенном выше коде. если вы можете поделиться любыми соответствующими ссылками, которые будут полезны. Спасибо
Ответ №1:
Вы можете использовать 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('amp;') :
`${key}=${paramObj[key]}`
)
.join('amp;');
console.log( qs );
Ответ №2:
Чтобы преобразовать объект в строку, подходящую для использования в строке запроса URL, вы можете использовать:
jQuery.param(): Создайте сериализованное представление массива, простого объекта или объекта jQuery, подходящего для использования в строке запроса URL или запросе Ajax. В случае передачи объекта jQuery он должен содержать входные элементы со свойствами name / value.
let paramObj = {
name: 'title',
properties: [01, 02, 03],
rooms: [01],
city: 'cityname'
}
let params = $.param(paramObj).replace(/[]/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>