#javascript #json
#javascript #json
Вопрос:
Я пытаюсь добавить комбинацию продуктов и количеств в конец строки url. Каждая комбинация продукта / количества разделяется точкой с запятой, а не запятой.
Вот что я сделал: https://test.com?products=81:1 ,77:1,107:1
Это то, что я хочу: https://test.com?products=81:1 ; 77:1;107:1
Приведенный ниже код показывает, как я создаю массив prods, а возвращаемые prods — это то, что добавляется в конец URL.
json.forEach(function (obj) {
prods.push(obj.product_id ':' obj.quantity);
});
return prods;
Ответ №1:
return prods;
возвращает toString массива с разделителями-запятыми.
Просто измените на
return prods.join(':');
На самом деле просто сделайте
return json.map(obj => `${obj.product_id}:${obj.quantity}`).join(';');
Ответ №2:
Ниже приведен фрагмент кода, который создает «шаблон URL» на основе ваших критериев. Точка с запятой появляется при использовании join, который преобразует массив product:quantity в строку, объединенную точками с запятой.
Обратите внимание, что я решил, что вы могли бы использовать более универсальный подход, потому что вы не предоставляете нам структуру данных вашего JSON, поэтому созданный мной фрагмент не зависит от этого и вместо этого фокусируется на том, чтобы вы использовали результат по своему вкусу.
var makeProductUrl = (array) => {
var products,
templateUrl = 'http://test.com?products=';
products = array.map((elem) => {
return `${elem.product_id}:${elem.quantity}`;
}).join(';')
return `${templateUrl}${products}`;
};
var someArray = [
{
product_id: 'A',
quantity: 1
},
{
product_id: 'A',
quantity: 123
},
{
product_id: 'A',
quantity: 88
},
{
product_id: 'D',
quantity: 12
},
],
url = makeProductUrl(someArray);
alert(url);