Wasswa Samuel
Wasswa Samuel

Reputation: 2179

Convert an array of objects to an object

I have an array of objects like this

const values = [{
    existing_value: 'Headline 56',
    new_value: 'Headline_new56',
  },
  {
    existing_value: 'Headline 59',
    new_value: 'Headline_new59',
  },
]

And I want to convert into this form.

const newObject = { "Headline 56": "Headline_new56",  "Headline 59": "Headline_new59"}

I was thinking something like this could work

const newObject = {}

const testvalues = values.map(obj => Object.assign( newObject, obj.existing_value: obj.new_value)) 

Syntactically it's not quite right. What is the best way to go about it?

Upvotes: 1

Views: 82

Answers (3)

Ricardo Garcia Landete
Ricardo Garcia Landete

Reputation: 417

Extracted from mozilla webdocs

const values = [{
        existing_value: 'Headline 56',
        new_value: 'Headline_new56',
    },
    {
        existing_value: 'Headline 59',
        new_value: 'Headline_new59',
    },
];

const newObj = values.map((obj) => {
    var rObj = {};
    rObj[obj.existing_value] = obj.new_value;
    return rObj;
});

console.log(newObj);

Upvotes: 0

Jay
Jay

Reputation: 3107

Use Array reduce

const values = [{
    existing_value: 'Headline 56',
    new_value: 'Headline_new56',
  },
  {
    existing_value: 'Headline 59',
    new_value: 'Headline_new59',
  },
];

const obj = values.reduce((a, b) => ({ ...a,
  [b.existing_value]: b.new_value
}), {})

console.log(obj)

Upvotes: 1

cmgchess
cmgchess

Reputation: 10247

Object.fromEntries is a possible approach

const values = [{
    existing_value: 'Headline 56',
    new_value: 'Headline_new56',
  },
  {
    existing_value: 'Headline 59',
    new_value: 'Headline_new59',
  },
]

const newObj = Object.fromEntries(values.map(({existing_value,new_value})=>[existing_value,new_value]))

console.log(newObj)

Upvotes: 4

Related Questions