user14217954
user14217954

Reputation: 23

How to convert an array with objects that contain value,values to a single object with only key,values?

So after drawing data for the database I ended up with something like

[
{name: "id", data_type: "integer"}
{name: "name", data_type: "char"}
{name: "active", data_type: "boolean"}
]

but what I want is:

{id: "integer" , name: "char" , active: "boolean" }

I tried a bunch of things but couldn't figured it out, any helps would be appreciated

This is my desperate attempt:

Object.entries(jsonData).map((type) => {
        return { ...objectList, [type[1].name]: type[1].data_type };
      }).reduce((objectList, object) => (
          ...objectList,
          object)
        )

Upvotes: 1

Views: 68

Answers (3)

Daniel Pantalena
Daniel Pantalena

Reputation: 429

another way is using Array.reduce()

const array = [
  { name: 'id', data_type: 'integer' },
  { name: 'name', data_type: 'char' },
  { name: 'active', data_type: 'boolean' },
];

const newObject = array.reduce((finalObj, obj) => {
  finalObj[obj.name] = obj.data_type;
  return finalObj;
}, {})

console.log(newObject)

Upvotes: 0

Adrian Brand
Adrian Brand

Reputation: 21628

Here is a reduce

const data = [
{name: "id", data_type: "integer"},
{name: "name", data_type: "char"},
{name: "active", data_type: "boolean"}
];

const arrayToObject = arr => arr.reduce((result, value) => {
  result[value.name] = value.data_type;
  return result;
}, {});

console.log(arrayToObject(data));

Upvotes: 1

Majed Badawi
Majed Badawi

Reputation: 28404

Here is a simple approach:

let arr = [
{name: "id", data_type: "integer"},
{name: "name", data_type: "char"},
{name: "active", data_type: "boolean"}
];
let map = {};
arr.forEach(e => map[e.name]=e.data_type);
console.log(map);

If you want to use .reduce, try this:

let arr = [
{name: "id", data_type: "integer"},
{name: "name", data_type: "char"},
{name: "active", data_type: "boolean"}
];
let map = arr.reduce(function(obj,item){
  obj[item.name] = item.data_type; 
  return obj;
}, {});
console.log(map);

Upvotes: 2

Related Questions