allpeople
allpeople

Reputation: 9

how to change json data by javascript

I have a Json data

   var orign = {
            users: [
                { name: "name1", id: "aaa1", classify: "depth1" },
                { name: "name2", id: "aaa2", classify: "depth1" },
                { name: "name3", id: "aaa3", classify: "depth2" },
            ]
        }

I want to change json data like this

        var result = {
            "depth1" : [
                { name: "name1", id: "aaa1"},
                { name: "name2", id: "aaa2"},
            ],
            "depth2" : [
                { name: "name3", id: "aaa3"},
            ],
           
        }

how can I change this by Javascript?

Upvotes: 0

Views: 58

Answers (2)

GoonGamja
GoonGamja

Reputation: 2286

This is quite similar question I posted a year ago here

Hope my answer could help

var origin = {
  users: [
      { name: "name1", id: "aaa1", classify: "depth1" },
      { name: "name2", id: "aaa2", classify: "depth1" },
      { name: "name3", id: "aaa3", classify: "depth2" },
  ]
};

const reducer = (acc, item) => {
  if (!acc[item.classify]) {
    acc[item.classify] = [];    
  } 
  acc[item.classify].push({name: item.name, id: item.id})
  
  return acc
}

const result = origin.users.reduce(reducer, {});

console.log(result)

Upvotes: 0

Md Sabbir Alam
Md Sabbir Alam

Reputation: 5054

You can do the following using reduce,

origin = {
            users: [
                { name: "name1", id: "aaa1", classify: "depth1" },
                { name: "name2", id: "aaa2", classify: "depth1" },
                { name: "name3", id: "aaa3", classify: "depth2" },
            ]
        }

res = origin.users.reduce((prev, curr) => {
  const {classify, ...rest} = curr;
  if(prev.hasOwnProperty(classify)) {
    prev[classify].push(rest);
  } else {
    prev[classify] = [rest];
  }
  return prev;
}, {});

console.log(res);

Upvotes: 1

Related Questions