tengo una matriz:
[ "2022-05-20", "2022- 06-22", "2022-06-20" ]y quiero producir un objeto como este:
{ '2022-05-20': {disabled:true}, '2022-06-22': {disabled: true}, '2022-06-20': {disabled: true}, }Intenté usar un bucle for pero seguía produciendo errores. ¿Es esto posible con javascript?
Puede usar Array#reduce como en la siguiente demostración. También puede usar Array#map pero también tendría que usar Object.fromEntries .
const input = [ "2022-05-20", "2022- 06-22", "2022-06-20" ], output = input.reduce( (prev,cur) => ({...prev,[cur]:{disabled:true}}), {} ); console.log( output ); UTILIZANDO Array#map ...
Así es como puedes usar Array#map :
const input = [ "2022-05-20", "2022- 06-22", "2022-06-20" ], output = Object.fromEntries( input.map(date => [date, {disabled:true}]) ); console.log( output );Esto podría hacer el trabajo.
const yourArray = ["2022-05-20", "2022-06-22", "2022-06-20"]; const obj = {}; for(const x of yourArray) obj[String(x)] = { disabled: true }; console.log(obj); // :) Cree la variable obj que va a guardar el objeto producido que desea. Iterando arrojar su matriz y usar una versión analizada de cadena del valor en la iteración actual (analizar por si acaso, si ya sabe que la matriz está hecha de cadenas, esto es un poco innecesario) para guardarlo como una clave en el nuevo objeto, asignando también a esa clave, el valor { disabled: true } .
Aquí hay una solución de una sola línea:
let res = data.reduce((acc, curr) =>(acc[curr] = {disabled: true}, acc), {});