Мой вопрос прост. Я знаю строку запроса npm, но есть особый случай. Мои параметры запроса выглядят так:

params={

foo:'bar',
data:[1,2,3],
data2:[4,5,6]
} 

Мне нужно вывести что-то вроде ?foo=bar&data=1,2,3&data2=4,5,6

Не то, что сделано с помощью запроса. запрос выведите его как

?foo=bar&data=1 &data=2&data=3..........

4
Sunil Yadav 31 Авг 2017 в 15:17

4 ответа

Лучший ответ

Проблема, с которой вы сталкиваетесь, может быть решена следующим образом:

const queryString = require('query-string')

const seacrh=queryString.stringify(params)

Вышеприведенная строка производит search=?foo=bar&data=1%0C2%0C3&data2=4%0C5%0C6

Чтобы удалить нелогичный символ, просто расшифруйте URL, используя строки кода ниже

const search1=decodeURIComponent(seacrh);

DecodeURIComponent декодирует эти нелогичные строки.

2
user2903536 31 Авг 2017 в 14:15

Следующее должно делать то, что вы после.

Я только что использовал array.join, чтобы получить ваши данные в правильном формате.

var params={
  foo:'bar',
  data:[1,2,3],
  data2:[4,5,6]
};

//?foo=bar&data=1,2,3 & data2=4,5,6

console.log(
  `?foo=${params.foo}&data=${params.data.join(',')}&data2=${params.data2.join(',')}`);
0
Keith 31 Авг 2017 в 12:28

Вот функция, которая делает галочку:

var params = {
  foo:   'bar',
  data:  [1,2,3],
  data2: [4,5,6]
};

function toQuery (params) {
  var queryString = '';
  // Check that we've been suplied with an object.
  if (params.constructor !== Object) {
    return queryString;
  }
  // Iterate over parameters
  for (var param in params) {
    if (!params.hasOwnProperty(param)) {
      continue;
    }
    if (typeof params[param] === 'string' || typeof params[param] === 'number') {
      queryString += '&' + param + '=' + params[param];
    }
    if (params[param].constructor === Array && params[param].length) {
      queryString += '&' + param + '=' + params[param].join(',');
    }
  }
  // Change first '&' to '?'
  if (queryString.length) {
    queryString = '?' + queryString.substring(1);
  }
  // Return the query string, empty string if no usable parameters.
  return queryString;
}

console.log(toQuery(params));
0
b00t 31 Авг 2017 в 13:12

Если вам нужно построить свой поиск:

let params = {
  foo: 'bar',
  data: [1, 2, 3],
  data2: [4, 5, 6]
};

let queryString = Object.keys(params).map(
  key => `${key}=${params[key]}`
).join('&');

console.log(queryString)
  • строковый конструктор автоматически разделит запятую в массиве
  • это очень элементарно и не включает кодировку URI и т. д.
0
BotNet 31 Авг 2017 в 13:22