2017-10-15 8 views
0

私はフィルタの配列を表すオブジェクトを持っています。配列内のオブジェクトはすべてidvalueです。今、私はこの配列からクエリ文字列を生成したい:ramdaでクエリ文字列を生成

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

出力は以下のように見えることがhsould:RAMDAでこのようなネストされたクエリを生成する

/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 

今どのように?

答えて

2

個人的に私はちょうどこれのために既存のライブラリを使用したいと思います(query stringの検索npmがたくさんあります)。あなたは特にラムダを使用して自分でそれを行う場合:

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)