Estoy tratando de eliminar un elemento de una matriz. Hay una verificación simple para determinar si el elemento se agregó y, si es cierto, estoy tratando de usar el filtro para eliminarlo, pero esto no funciona. No entiendo cómo include() puede encontrar el elemento coincidente, pero luego, al intentar filtrarlo, ¿no lo eliminará? El elemento en cuestión es solo un uuid.
const AddCheckedPriv = (PrivIdToAdd) => { if (newUser.privilege_groups.includes(PrivIdToAdd)) { console.log("includes"); let newPrivilegeGroups = newUser.privilege_groups; newPrivilegeGroups.filter((priv) => priv != PrivIdToAdd); console.log(newPrivilegeGroups.find(PrivIdToAdd)); } else { let newPrivilegeGroups = newUser.privilege_groups; newPrivilegeGroups = [...newPrivilegeGroups, PrivIdToAdd]; setNewUser({ ...newUser, privilege_groups: newPrivilegeGroups }); } };Gracias,
greg
.filter no muta la matriz existente en el lugar. (Eso sería un problema en React, después de todo). Devuelve una nueva matriz. Debe asignar el resultado a una variable, o registrar el resultado, o algo así. En este momento, simplemente lo estás ignorando.
if (newUser.privilege_groups.includes(PrivIdToAdd)) { let newPrivilegeGroups = newUser.privilege_groups.filter((priv) => priv !== PrivIdToAdd);