Home > Software design >  How to convert json object keys into different arrays removing the duplicate
How to convert json object keys into different arrays removing the duplicate

Time:10-27

I'm having the JSON like this i need to group this JSON with all the keys in JSON object and value should in array (excluding duplicates).

var people = [
    {sex:"Male", name:"Jeff"},
    {sex:"Female", name:"Megan"},
    {sex:"Male", name:"Taylor"},
    {sex:"Female", name:"Madison"}
];

My output should be like

{"sex":["Male","Female"],"name":["Jeff","Megan","Taylor","Madison"]}

how we can able to achieve this

CodePudding user response:

function getValues(array) {
    var result = {};
    array.forEach(obj => {
        Object.keys(obj).forEach(key => { 
        if(!Array.isArray(result[key])) 
            result[key] = [];
        result[key].push(obj[key]);
        })
    })
return result;
}

CodePudding user response:

You could use the Array.reduce() method to transform your array into a single object:

var people = [
    {sex:"Male", name:"Jeff"},
    {sex:"Female", name:"Megan"},
    {sex:"Male", name:"Taylor"},
    {sex:"Female", name:"Madison"}
];

const transformed = people.reduce((acc, e) => {
  Object.keys(e).forEach((k) => {
    if (!acc[k]) acc[k] = [];
    if (!acc[k].includes(e[k])) acc[k].push(e[k]);
  });
  return acc;
}, {});

console.log(transformed);
<iframe name="sif1" sandbox="allow-forms allow-modals allow-scripts" frameborder="0"></iframe>

If for one of the object keys (sex or name in this case) a value array does not exist, it is created. Before a value is pushed into any of the value arrays, it is verified that it is not already present in that array.

  • Related