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?
Try this:
const data = ['foo', 'bar', 'baz']
const asObject = Object.fromEntries(data.map(d => ([d, true])))
console.log(asObject)
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.
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)