hola he visto preguntas similares pero no fueron útiles.
Estoy creando una lista de invitados que requiere 10 personas, si el usuario intenta agregar un undécimo nombre a la matriz, el programa debería decir: “Ya agregó 10 personas a su lista de invitados. ¿Te gustaría reemplazar a alguien en la lista con esta persona? t/n: ”
Si el usuario ingresa "y", el programa debe generar la lista de invitados actual y luego pregunta: "¿A quién le gustaría reemplazar?"
este es mi código:
let i = 0; let input = names; do { input = names.push(prompt("Who would you like to invite to your dinner party?")); i++; } while (names.length < 11); if (names.length == 11 ){ input2 = prompt(`You have already added 10 people to your guest list. Would you like to replace someone on the list with this person? Y/N:`) } let yes = "Y"; let no = "N"; if (input2 === yes){ replaceInput = prompt((`Your guests are:${names} Who would you like to replace?`)); } alert(`your new guests are: ${names}`)Ahora, ¿cómo hago para que el programa reemplace a la persona que el usuario especifica con la persona número 11 dada y genere la lista actualizada?
Encuentre el índice del invitado seleccionado y reemplace el invitado en ese índice con el 11º invitado. Consulte el código de ejemplo para obtener más aclaraciones:
// inputs let currentNames = ["X1", "X2", "X3", "X4", "X5", "X6", "X7", "X8", "X9", "X10"] // this variable will have the result of the first prompt() call (new guest) let newName = "X11"; // this variable will have the result of the second prompt() call (guest to replace the new guest with) let nameToReplace = "X5"; // implementation let indexOfNameToReplace = currentNames.indexOf(nameToReplace); if (indexOfNameToReplace > -1) { currentNames[indexOfNameToReplace] = newName; console.log(`New array is: ${currentNames}`); // New array is: [X1,X2,X3,X4,X11,X6,X7,X8,X9,X10] } else { console.log(`No guest found by the given name: "${nameToReplace}"`) }El método indexOf() devuelve el primer índice en el que se puede encontrar un elemento dado en una matriz.
Al usar indexOf(), buscamos el índice del nombre que ingresa el usuario (replaceInput) y lo reemplazamos con (newInput), siempre que el valor del índice no sea -1.
let names = []; let i = 0; let input = names; do { input = names.push( prompt("Who would you like to invite to your dinner party?") ); i++; } while (names.length < 11); if (names.length == 11) { input2 = prompt(`You have already added 10 people to your guest list. Would you like to replace someone on the list with this person? Y/N:`); } let yes = "Y"; let no = "N"; if (input2 === yes) { replaceInput = prompt(`Your guests are:${names} Who would you like to replace?`); newInput = prompt("Enter New guest name: "); const nameReplace = names.indexOf(replaceInput); if (nameReplace !== -1) { names[nameReplace] = newInput; } } alert(`your new guests are: ${names}`);puede usar directamente el método push() en matrices de javascript. Por ejemplo:
<html> <body> <h1>JavaScript Arrays</h1> <h2>The push() Method</h2> <p>push() adds new items to the end of an array:</p> <p id="demo"></p> <script> const fruits = ["1", "2", "3", "4"]; fruits.push("5", "6"); document.getElementById("demo").innerHTML = fruits; </script> </body> </html>cuando ejecute este código, el resultado será:
1,2,3,4,5,6