Me gustaría convertir una matriz que se vea así:
['foo', 'bar', 'baz']a un objeto que se parece a esto:
{ foo: true, bar: true, baz: true, } En la mayoría de los idiomas, tendría algún tipo de función de fill(keys, value) :
var array = ['foo', 'bar', 'baz']; var object = fill(array, true); // object = { foo: true, bar: true, baz: true}Pero en JS solo puedo encontrar uno para claves numéricas usando un rango, no una lista de claves. ¿Hay una función de relleno que haga exactamente eso?
Prueba esto:
const data = ['foo', 'bar', 'baz'] const asObject = Object.fromEntries(data.map(d => ([d, true]))) console.log(asObject)Puedes construir un objeto con .reduce() :
var object = array.reduce((o, e) => (o[e] = true, o), {}); edit — o la inteligente solución Object.fromEntries() mencionada en un comentario.
No existe una función como fill(keys, value) que mencionó, pero también podría hacerlo:
let tab = ['foo', 'bar', 'baz']; let obj = {} tab.forEach(v=>{obj[v]=true}); console.log(obj)