使用 ramda 生成查询字符串

Generate query string with ramda

我有一个代表过滤器数组的对象。数组中的任何对象都有 idvalue。现在我想从这个数组生成查询字符串:

{ filtered: '[{"id":"tags","value":["soap"]}]',
  limit: '10',
  offset: '0',
  sorted: '[]' }

输出应该如下所示:

/item?filtered=%5B%7B%22id%22%3A%22tags%22%2C%22value%22%3A%5B%22soap%22%5D%7D%5D&limit=10&offset=0&sorted=%5B%5D

现在如何使用 ramda 生成这样的嵌套查询?

就我个人而言,我只是为此使用一个现有的库(有很多,在 npm 中搜索 query string)。如果你自己使用特别是 ramda 来做的话:

const qs = R.compose(
  s => `?${s}`, // Prepend a ?
  R.join('&'), // Join each segment of the query with '&'
  R.map(R.join('=')), // Join the key-value pairs with '='
  R.map(R.map(encodeURIComponent)), // encode keys and values
  R.toPairs, // convert the object to pairs like `['limit', 5]`
)(input)