使用ramda生成查询字符串

时间:2017-10-15 06:12:57

标签: javascript json ramda.js

我有一个代表过滤器数组的对象。数组中的任何对象都有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生成这样的嵌套查询?

1 个答案:

答案 0 :(得分:2)

就我个人而言,我只是使用现有的库(有许多,query string搜索npm)。如果你自己使用特别是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)