HubertNNN
HubertNNN

Reputation: 2121

JavaScript, how to create an object out of an array?

I would like to convert an array that looks like this:

['foo', 'bar', 'baz']

to an object that looks like this:

{
  foo: true,
  bar: true,
  baz: true,
}

In most languages you would have some form of fill(keys, value) function:

var array = ['foo', 'bar', 'baz'];
var object = fill(array, true);
// object = { foo: true, bar: true, baz: true}

But in JS I can only find one for numeric keys using a range, not a list of keys. Is there a fill function that will do exactly that?

Upvotes: 1

Views: 91

Answers (5)

delalluyah
delalluyah

Reputation: 67

You can create a new object, loop over the array and add each value to it.

let arr = ['foo','bar','baz'];
let obj={};
arr.forEach(el => {obj[el] = true})

Upvotes: 0

Youssouf Oumar
Youssouf Oumar

Reputation: 46291

There isn't such function as fill(keys, value) that you mentioned, but you could also do so:

let tab = ['foo', 'bar', 'baz'];

let obj = {}

tab.forEach(v=>{obj[v]=true});

console.log(obj)

Upvotes: 1

Mr. Polywhirl
Mr. Polywhirl

Reputation: 48751

You can map the array values to entries (key, value pairs) and then transform the matrix into an object.

const
  arr = ['foo', 'bar', 'baz'],
  obj = Object.fromEntries(arr.map(v => [v, true]));

console.log(obj);

Upvotes: 1

Ben Clayton
Ben Clayton

Reputation: 82267

Try this:

const data = ['foo', 'bar', 'baz']
const asObject = Object.fromEntries(data.map(d => ([d, true])))

console.log(asObject)

Upvotes: 5

Pointy
Pointy

Reputation: 414036

You can build an object with .reduce():

var object = array.reduce((o, e) => (o[e] = true, o), {});

edit — or the clever Object.fromEntries() solution mentioned in a comment.

Upvotes: 2

Related Questions