var memberName = input.question("Please enter member's name: "); memberName = memberName.substring(0, 1).toUpperCase() + memberName.substring(1).toLowerCase(); subMemberGroups(); if (subMemberGroup.includes(memberName)) { const memberGroupIndex = memberGroup.findIndex((e) => e.name === memberName) if (memberGroupIndex !== -1) { memberGroup.splice(memberGroupIndex, 1); // if exists remove it console.log("Member deleted!\n"); } else { console.log("Member does not exist.\n"); } } else { console.log("Member does not exist.\n"); } choices(); while (true) { var memberName = input.question("Please enter member's name: "); memberName = memberName.substring(0, 1).toUpperCase() + memberName.substring(1).toLowerCase(); subMemberGroups(); if (subMemberGroup.includes(memberName)) { console.log ("\nMember's name exists in database. Please enter a new name."); } else { var memberDOB = input.question("Please enter member's date of birth: "); var memberDJ = input.question("Please enter member's date joined: "); var userNew = new Member (memberName, 'Ruby', memberDJ, memberDOB, 0); memberGroup.push(userNew); break; } } while (true) { var memberName = input.question("Please enter member's name: "); memberName = memberName.substring(0, 1).toUpperCase() + memberName.substring(1).toLowerCase(); subMemberGroups(); if (subMemberGroup.includes(memberName)) { console.log ("\nMember's name exists in database. Please enter a new name."); } function subMemberGroups() { for (var i = 0; i < memberGroup.length; i++) { subMemberGroup.push(memberGroup[i]["name"]); } } memberGroup = [userJohn, userLemuel]; subMemberGroup = ['John', 'Samuel']; var userJohn = ['John', '20']; var userLemuel = ['Lemuel', '22']; var userJohn = new Member ['John', '24'];El primer bloque de código eliminará los detalles de cualquiera de ellos dependiendo de lo que ingrese el usuario. El código funciona bien. Sin embargo, después de intentar agregar un nuevo miembro, me indica que el miembro ya existe. ¿Cómo elimino permanentemente los detalles del usuario en la matriz 2D?
El segundo bloque de código agregará un nuevo miembro. Sin embargo, después de que se ejecuta el primer bloque de código, el segundo bloque de código dice que el nombre ya existe, aunque ya ejecuté el primer bloque de código para eliminar el miembro, es decir, John.
Me preguntaba que puedo hacer para solucionar esto?
Cuando elimina a un miembro, lo elimina del grupo de memberGroup , pero aún está en subMemberGroup de miembros. Cuando intenta agregar o eliminar un miembro, primero verifica dentro subMemberGroup de miembros si ya existe.
Intenta editar así:
if (subMemberGroup.includes(memberName)) { const memberGroupIndex = memberGroup.findIndex((e) => e.name === memberName) if (memberGroupIndex !== -1) { memberGroup.splice(memberGroupIndex, 1); // if exists remove it subMemberGroup.splice(subMemberGroup.indexOf(memberName), 1); // add this line to remove member from subMemberGroup console.log("Member deleted!\n"); } else { console.log("Member does not exist.\n"); } }