Home > Back-end >  Create JSON dynamically with dynamic keys and values in Express Js
Create JSON dynamically with dynamic keys and values in Express Js

Time:05-07

I am fetching API into my Express server which has several JSON key value pairs in one array. For Example:

[{
 "quality": "best",
 "url": "https://someurlhere.example/?someparameters"
},
{
 "quality": "medium",
 "url": "https://someurlhere1.example/?someparameters"
}]

And I want to create an array of JSON of that received data in this Format:

[{
"best": "https://someurlhere.example/?someparameters"
},
{
"medium": "https://someurlhere1.example/?someparameters"
}]

I have tried doing this by using for loop

for(let i=0; i < formats.length; i  ){
   arr.push({
     `${formats[i].quality}` : `${formats[i].url}`
   })
}

But it didn't work for me.

Please help me in achieving this. Thanks in Advance :)

CodePudding user response:

You could use the map function and create a new object from it.

For example:

let prevArr = [{
  "quality": "best",
  "url": "https://someurlhere.example/?someparameters"
}, {
  "quality": "medium",
  "url": "https://someurlhere1.example/?someparameters"
}]; // Replace with your array
let newArr = [];
let obj = {};

prevArr.map(function(x) {
  obj = {};
  obj[x["quality"]] = x.url;
  newArr.push(obj);
});

CodePudding user response:

const input = [{
    "quality": "best",
    "url": "https://someurlhere.example/?someparameters"
}, {
    "quality": "medium",
    "url": "https://someurlhere1.example/?someparameters"
}];
const result = input.map((v, i) => {
    return {
        [v["quality"]]: v["url"]
    }
});
console.log(result)
  • Related