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.
CodePudding user response:
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
CodePudding user response:
You can use reduce
:
const dict = {
rel: 'preload',
as: 'image',
type: 'image/webp'
};
let result = Object.keys(dict).reduce((acc, key) => acc `${key}=${dict[key]} ` ,'');
console.log(result);
CodePudding user response:
This line may work for you:
const dict = {
rel: 'preload',
as: 'image',
type: 'image/webp'
};
const result = Object.entries(dict).map(item => `${item[0]} = '${item[1]}'`).join(' ')
console.log(result)