¿Cómo hacer que una matriz sea única por clave de objeto? Tengo casillas de verificación dinámicas, cuya identificación pongo en el estado.
En el formato [checkBoxId]: e.target.value
Y luego trato de hacer una matriz única a partir de lo recibido marcado en la casilla de verificación, pero no sale nada
[...new Map( myCheckboxes.map((item) => { // item {dfsd34534ftg: true} (dfsd34534ftg - id) const key = Object.keys(item); return [item[key], item]; }), ).values()] {response.map(({ id}, idx) => ( <div key={id}> <Checkbox change={e => { setMyCheckboxes(prev => [ ...prev, { [id]: e.target.checked, }, ]); }} checked={myCheckboxes[idx]?.id} /> ...Object.keys(item) devuelve Array , que intenta usar como clave. Debe extraer la clave de esta matriz para que funcione como desea:
const key = Object.keys(item)[0]; return [item[key], item];En primer lugar, debe declarar el estado de sus casillas de verificación
const [myCheckboxes, setMyCheckboxes] = useState({}) //define a map Y luego puede llamar a setMyCheckboxes en el evento de change como se muestra a continuación
{response.map(({ id }, idx) => ( <div key={id}> <Checkbox change={e => { setMyCheckboxes(prev => ({ ...prev, [id]: e.target.checked, })); }} checked={myCheckboxes?.id} /> ...