¿Cuál es una forma más compacta de convertir color=["red", "green", "blue", "Other"]
en colorObjFinal = { blue: true, green: true, Other: "Other", red: true }
?
Esta es mi función larga, me gustaría acortarla:
let color = ["red", "green", "blue", "Other"]; let colorObj; let colorObjFinal = {}; console.log("color:", color); colorObj = color.reduce((a, v) => ({ ...a, [v]: v }), {}); console.log("colorObj:", colorObj) for (var key in colorObj) { if (colorObj.hasOwnProperty(key)) { if(key == 'Other'){ colorObjFinal[key] = colorObj[key]; } else { colorObjFinal[key] = true; } } } console.log("colorObjFinal:", colorObjFinal)
Podrías hacerlo todo de una sola vez:
let color = ["red", "green", "blue", "Other"]; let result = color.reduce ((a,v) => ({ ...a, [v] : v == "Other" ? v : true }),{}); console.log(result);
Puede cambiar su primer Array.reduce
para obtener el resultado.
let color = ["red", "green", "blue", "Other"]; const result = color.reduce((acc, item) => { acc[item] = (item != "Other") ? true : item; return acc; }, {}); console.log(result);
que ? (posiblemente es la escritura más compacta aquí)
let color = ["red", "green", "blue", "Other"]; const res = color.reduce((a,c)=>(a[c]=c=='Other'?c:true,a),{}); console.log(res);