I am trying to parse a dictionary into a string in one line as elegantly as possible.
The string could have anywhere from 1 key value pair to 10.
The dictionary I have:
var dict = { rel: 'preload', as: 'image', type: 'image/webp' }
And I am trying to parse it into a query string converting it into:
return "rel='preload' as='image' type='image/webp'"
I know that using Object.keys and forEach i can traverse the Dict but how do i concatinate it as well in the same statement?
This is how far i have gotten:
Object.keys(dict).forEach(key => console.log(`${key}="${dict(key)}"`) )
How do i concatinate the result of that in the same line? Is it possible? I have been trying with:
.reduce() .push() .concat() .join()
but can’t seem to get it to work in one line.
Advertisement
Answer
This is one way to obtain the desired result.
const dict = { rel: 'preload', as: 'image', type: 'image/webp' }; console.log( Object.entries(dict) .map(([k, v]) => (`${k}='${v}'`)) .join(' ') );
It uses
- Object.entries() – to obtain key-value pairs from object
- .map() – to iterate over key-value pairs
- backtick ` – to transform each pair to desired structure
- .join() – to finally transform the array into a string