Estoy iterando a través de objetos de datos de fuentes y quiero enviar o agregar su nombre y estilo de postscript como un par clave/valor. El nombre de la posdata siempre será la versión normal de la posdata, por lo que necesito realizar un seguimiento del estilo con ella. Por ejemplo, quiero que mi estructura de datos se vea así:
[ { "Arial-MT", "Bold" }, { "Arial-MT", "Regular"} ] Sin embargo, durante la iteración, si me encuentro con otro postscript_name que sea Arial-MT y estilo Bold o Regular , no quiero agregarlo a mi objeto de datos. ¿Cuál es el enfoque más limpio para esto?
Utilice un objeto que contenga Sets de cadenas.
const styles = { "Ariel-MT": new Set(["Bold", "Regular"]) }; postscript_data.forEach(([postscript_name, postscript_style]) => { if (styles[postscript_name]) { styles[postscript_name].add(postscript_style); } else { style[postscript_name] = new Set([postscript_style]) } });He corregido la estructura de datos que proporciona como una matriz de objetos :
const data = [ { "Arial-MT": "Bold" }, { "Arial-MT": "Regular"}, { "Arial-MT": "Bold" }, { "Arial-MT": "Regular"}, ]; let visited = []; let result = []; for(const obj of data){ const [k,v] = Object.entries(obj)[0]; if(!visited.includes(`${k}_${v}`)){ const new_obj = {} new_obj[k] = v; result.push(new_obj); visited.push(`${k}_${v}`); } } console.log(result)