No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Aprende todo un fin de semana sin pagar una suscripción 🔥

Aprende todo un fin de semana sin pagar una suscripción 🔥

Regístrate

Comienza en:

1D
1H
22M
57S
Curso Básico de JavaScript

Curso Básico de JavaScript

Juan David Castro Gallego

Juan David Castro Gallego

Playground: rescata al estudiante

21/29

Aportes 284

Preguntas 13

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

o inicia sesión.

Me llevo mucho rato entenderlo, incluso vi la solucion y no entendi a la primera pero he aqui mi opinion.

el problema es que no entendemos lo que nos esta pidiendo el programa, nos pide que eliminemos la cantidad de estudiantes que indica “deathCount”, no todos los estudiantes.

Les dejo mi solucion:

export function solution(estudiantes, deathCount, nuevo) {
  while (deathCount > 0) {
    estudiantes.pop();
    deathCount--;
  }

  estudiantes.push(nuevo);
  return estudiantes;
}
export function solution(estudiantes, deathCount, nuevo) {
    for (deathCount; deathCount > 0; deathCount--) {
      estudiantes.pop();
    }
    estudiantes.push(nuevo);
    return estudiantes;
  }


Mi solucion mas la explicacion del codigo ya que al principio no podia entender es mejor realizar la solucion por partes ya que es mas facil

export function solution(estudiantes, deathCount, nuevo) {
  while (deathCount > 0) { // creamos un ciclo ya que decaunt no es =0
    estudiantes.pop(); // la funcion .pop elimina el ultimo elemento de un arreglo
  deathCount--; // este codigo sirve para disminuir -1 al deathcount hasta que este en 0 y se cumpla la condicion de arriba(linea 2)
}
estudiantes.push(nuevo); // una vez deathcount es 0 el ciclo while termina , una vez deathcount es = 0 , se ejecuta este codigo , la funcion .push agrega un nuevo elemento al arreglo
return estudiantes; // se retorna el arreglo
}

var estudiantes = [“Nico”, “Zule”, “deylyn”, “beatriz”];
var deathCount = 2;
var nuevo = “eilyn”;
export function solution(estudiantes, deathCount, nuevo) {
// Tu código aquí 👈
if (deathCount == 0) {
estudiantes.push(nuevo);
return estudiantes;
} else if (deathCount > 0) {
estudiantes.splice(-deathCount, deathCount);
estudiantes.push(nuevo);
return estudiantes;
}
}

solution(estudiantes, deathCount, nuevo);

No se entiende la descripción del problema, por favor no nos compliquen mas la existencia… suficiente tengo con mis crisis existenciales

Adjunto mi solución:

Comparto mi solución:
export function solution(estudiantes, deathCount, nuevo) {
if (deathCount === 0) {
estudiantes.push(nuevo)
} else if (deathCount > 0) {
while (deathCount) {
estudiantes.pop()
deathCount–
}
estudiantes.push(nuevo)
}
return estudiantes
}

Solución:

export function solution(estudiantes, deathCount, nuevo) {
  if (deathCount === 0)
    return [...estudiantes, nuevo];

  const fin = estudiantes.length - deathCount;
  return [...estudiantes.slice(0, fin), nuevo]
}

Acá dejo mi aporte, el código que me funciono:

export function solution(estudiantes, deathCount, nuevo) {
  if (deathCount == 0) {
    estudiantes.push(nuevo);
  } else {
    for (var i = 0; i < deathCount; i++){
      estudiantes.pop();
    }
    estudiantes.push(nuevo);
  }
  return estudiantes;
}

Para realizar este ejercicio es recomendable utilizar el método slice, el cual permite eliminar uno o más elementos de un array en una sola instrucción.

El método slice regresa una copia del resultado del arreglo después de haberse implementado, es decir, no es un método que afecte de manera directa al propio arreglo, para afectarlo se puede reasignar así mismo (utilizando el mismo nombre de arreglo), o crear una copia del mismo desde otro arreglo, y asignar el valor resultante del método slice al nuevo arreglo.

Si desean obtener más información del método, pueden darle click acá.

La implementación final sería:

export function solution(estudiantes, deathCount, nuevo) {
  if (deathCount > 0) {
    estudiantes = estudiantes.slice(0, estudiantes.length - deathCount);
  }
  estudiantes.push(nuevo);
  return estudiantes;
}

que les parece trate de que sea bien legible

export function solution(estudiantes, deathCount, nuevo) {

  if (deathCount === 0) {
    estudiantes.push(nuevo)
    return estudiantes
  } else {
    for (let i = 0; i < deathCount; i++){
      estudiantes.pop()
    }
    estudiantes.push(nuevo)
    return estudiantes
    
  }
}

Así se puede hacer con if y for:

export function solution(estudiantes, deathCount, nuevo) {
// Tu código aquí 👈
if (deathCount === 0) {
estudiantes.push(nuevo);
} else {
for (var i = 0; i < deathCount; i++) {
estudiantes.pop()
}
estudiantes.push(nuevo);
}
return estudiantes;
}

No puedooooo hacer los ejercicioooooosss

Hola. Aquí encontré otra manera de las que he visto en algunos comentarios. Un poco más larga, pero igual funcionó.

export function solution(estudiantes, deathCount, nuevo) {
  // Tu código aquí 👈
  if (deathCount === 0) {
    estudiantes.push(nuevo);
    return estudiantes;
  } else {
    for (var i = 0; i < deathCount; i++){
      estudiantes.pop();
    }
    estudiantes.push(nuevo);
    return estudiantes;
  }
}

Dejo mi solución

export function solution(estudiantes, deathCount, nuevo) {
  if (deathCount == 0) {
    estudiantes.push(nuevo);
    return estudiantes;
  } else if (deathCount >= 1); {
    for (let i = 1; i <= deathCount; i++) {
      estudiantes.pop();
    }
    estudiantes.push(nuevo);
  }
  return estudiantes;
}

function solution(estudiantes, deathCount, nuevo) {
// Tu código aquí 👈
if (deathCount === 0) {
estudiantes.push(nuevo);
} else if (deathCount > 0) {
while (deathCount) {
estudiantes.pop();
deathCount–;
}
estudiantes.push(nuevo);
}
return estudiantes;
}

Mi solución 😃

export function solution(estudiantes, deathCount, nuevo) {
  if (deathCount == 0) {
    estudiantes.push(nuevo)
    return estudiantes
  }
  else if (deathCount > 0) {
    for (let i = 1; i <= deathCount; i++) {
      estudiantes.pop();
    }
    estudiantes.push(nuevo);
    return estudiantes
  }
}

Dejo mi solución, pude ver que había una manera muuhco mas sencilla, pero bueno, me quedo super feliz porque es el primer ejercicios de todos que pude hacer completamente solo sin mirar los comentarios, venia bastante frustrado que las cosas casi ni me salían y leer los comentarios me desmotivaban xd pero le seguí dando y lo logre!! :DD

export function solution(estudiantes, deathCount, nuevo) {
  while (deathCount >= 0) {
    if (deathCount == 0) {
      deathCount++;
      let masEstudiantes = estudiantes.push(nuevo);
      return estudiantes;
    } else if (deathCount == 1) {
      let otroEstudiante = estudiantes.pop("Daniela") && estudiantes.push(nuevo);
      return estudiantes;
    } else if (deathCount == 2) {
      let ultimoEstudiante = estudiantes.pop("Luisa") && estudiantes.pop("Noru") && estudiantes.push(nuevo);
      return estudiantes;
    }
  }
}

solution(["Nico", "Zule"], 0, "Santi")
solution(["Juan", "Juanita", "Daniela"], 1, "Julian")
solution(["Nath", "Luisa", "Noru"], 2, "Cami")

Hola a [email protected], comparto mi solución, al principio habia agregado un if en (deathCount === 0) pero al no ser una condición que pudiera o no cumplirse(siempre se cumple, cambia el “cuando” se cumple), no era necesario. Espero les sirva

export function solution(estudiantes, deathCount, nuevo) {
  while (deathCount > 0) {
    deathCount--;
    estudiantes.pop();
  }
  (deathCount === 0)
    estudiantes.push(nuevo);
    return estudiantes;
  }

Les comparto mi código espero les guste mi solución

export function solution(estudiantes, deathCount, nuevo) {
  if (deathCount == 0) {
    estudiantes.push(nuevo);
    return estudiantes;
  } else if (deathCount > 0) {
      for (var i = 0; i < deathCount; i++){
        estudiantes.pop(deathCount);
      }
    estudiantes.push(nuevo);
    return estudiantes;
  }
}

<code> 

La verdad, me llevó algún tiempo comprenderlo bien, e hice pruebas utilizando algún que otro método, pero al final este es el que me dio mejor resultado:

export function solution(estudiantes, deathCount, nuevo) {
  for (deathCount; deathCount > 0; deathCount--) {
  estudiantes.pop();
  }
  estudiantes.push(nuevo);
  return estudiantes;
}

export function solution(estudiantes, deathCount, nuevo) {
  // Tu código aquí 👈
  estudiantes.splice(estudiantes.length - deathCount, deathCount, nuevo);
  return estudiantes;
}

Me costó un poco, les dejo dos soluciones que encuentre a este reto.

export function solution(estudiantes, deathCount, nuevo) {
  for (deathCount; deathCount > 0; deathCount--) {
    estudiantes.pop()
  }

  estudiantes.push(nuevo);

  return estudiantes
}
export function solution(estudiantes, deathCount, nuevo) {
  while (deathCount > 0) {
    estudiantes.pop()
    deathCount--
  } 

  estudiantes.push(nuevo)
   return estudiantes
}

export function solution(estudiantes, deathCount, nuevo) {
  if (deathCount > 0) {
    for (let i = 0; i < deathCount; i++) {
      estudiantes.pop();
    }
    estudiantes.push(nuevo);
    return estudiantes

  } else {
    estudiantes.push(nuevo);
    return estudiantes
  }
}

Yo pensé de que el término “de atrás para delante” significaba “desde el elemento cero en adelante”. Es decir, en vez de pop, estaba usando shift()

export function solution(estudiantes, deathCount, nuevo) {
  // Tu código aquí 👈
  if (deathCount > 0)
    for (let i = 1; i <= deathCount; i++)
      estudiantes.pop()
  estudiantes.push(nuevo)
  return estudiantes
}

Por confiado me salió al segundo intento…

export function solution(estudiantes, deathCount, nuevo) {
  if (deathCount == 0) {
    estudiantes.push(nuevo);
    return estudiantes;
  } else if (deathCount > 0) {
    while (deathCount > 0) {
      estudiantes.pop();
      deathCount--;
    }
    estudiantes.push(nuevo);
    return estudiantes;
  }
}
export function solution(estudiantes, deathCount, nuevo) {
  // Tu código aquí 👈
  while (deathCount > 0) {
    estudiantes.pop();
    deathCount--;
  }
  estudiantes.push(nuevo);
  return estudiantes;
}

ez

  if (deathCount == 0) {
    estudiantes.push(nuevo);
    return estudiantes;

  } else if (deathCount > 0) {

    for (var i = 0; i < deathCount; i++) {
      estudiantes.pop();
    }

    estudiantes.push(nuevo);
    return estudiantes;

  }

Comparto mi solucion:

export function solution(estudiantes, deathCount, nuevo) {
for (deathCount; deathCount > 0; deathCount–) {
estudiantes.pop();
}
estudiantes.push(nuevo);
return estudiantes;
}

aquí les comparto mi solución :

export function solution(estudiantes, deathCount, nuevo) {

while (deathCount > 0) {
estudiantes.pop()
deathCount–
}
estudiantes.push(nuevo)
return estudiantes
}

mi humilde solucion

lo hice asi porque asi si arroja un array.
si lo hacia con un ciclo me daba los elementos por separado.
pero he visto soluciones mas elegantes. claro!

export function solution(estudiantes, deathCount, nuevo) {
  if (deathCount == 0) {
    estudiantes.push(nuevo);
    return estudiantes;

  } else if (deathCount > 0) {

    var reduc = estudiantes.length = estudiantes.length - deathCount
    estudiantes.push(nuevo);
    return estudiantes;

  } else {
    return "intenta otro parametro";
  }
}

export function solution(estudiantes, deathCount, nuevo) {
  // Tu código aquí 👈
  if (deathCount === 0) {
     estudiantes.push(nuevo);
    return estudiantes;
  } else if (deathCount > 0) {
    while (deathCount > 0) {
      estudiantes.pop();
      deathCount--;
    }
    estudiantes.push(nuevo);
    return estudiantes;
  }
}

export function solution(estudiantes, deathCount, nuevo) {
if (!Number(deathCount)) {
// es cero, regresa el array con el nuevo elemento
var estudiantePush = estudiantes.push(nuevo);
return estudiantes;
} else {
// es <> cero, eliminamos el numero de elementos de deathCount y agregamos el nuevo
var i = 0;
for (i = 0; i < deathCount; i++) {
var estudiantePop = estudiantes.pop(estudiantes[deathCount - 1]); // eliminamos el primer elemento
} console.log(se elemina el ${deathCount - 1})
var estudiantePush = estudiantes.push(nuevo);
return estudiantes;
}
}

Hola, así pude resolver el reto, eso si me tomó mas de lo que pensé:

export function solution(estudiantes, deathCount, nuevo) {
  // Tu código aquí 👈
  if (deathCount === 0) {
    estudiantes.push(nuevo)
    return estudiantes
  }
  else {
    for (var i = 0; i < deathCount; i++) {
      estudiantes.pop()
    }
    estudiantes.push(nuevo)
    return estudiantes
  }
}
<export function solution(estudiantes, deathCount, nuevo) {
  // Tu código aquí 👈
  for (var i = 1; deathCount >= i; i++) {
    estudiantes.pop()
  }
  estudiantes.push(nuevo)
  return estudiantes
}> 

if (deathCount === 0) {
estudiantes.push(nuevo)
return (estudiantes);
}

if (deathCount > 0) {
for (var i = 0; i < deathCount; i++) {
estudiantes.pop();
}
estudiantes.push(nuevo)
return (estudiantes);
}

Dejo mi pequeño aporte, tuve algunos inconvenientes, pero si quedo

<if (deathCount > 0) {
    for (var i = 0; deathCount > i; i++) {
      var menosestudiantes = estudiantes.pop();
    }

    var nuevoestudiantes = estudiantes.push(nuevo);
    return estudiantes;
  } else {
    var Masestudiantes = estudiantes.push(nuevo);
    return estudiantes;

  }> 

Aqui esta mi código del reto

export function solution(estudiantes, deathCount, nuevo) {
  var estudiante = estudiantes;

  if (deathCount === 0) {
    estudiante.push(nuevo);
    return(estudiante);
  } else if (deathCount === 1) {
    estudiante.pop();
    estudiante.push(nuevo);
    return(estudiante);
  } else if (deathCount === 2) {
    estudiante.pop();
    estudiante.pop();
    estudiante.push(nuevo);
    return(estudiante);
  }
  else {
    console.log("Error");
  }
}

export function solution(estudiantes, deathCount, nuevo) {
while (deathCount > 0) {
estudiantes.pop();
deathCount–
}
estudiantes.push(nuevo);
return (estudiantes);
}

asi me guiô la imaginacion

export function solution(estudiantes, deathCount, nuevo) {

  var estudiantes = ["Juan", "Juanita", "Daniela"]
  var deathCount = 0



  for (deathCount > 0; Pestudiantes; nuevo)
    var Pestudiantes = estudiantes.shift()

  var nuevo = estudiantes.push("Julian")
}

solution()

He aquí mi solución

export function solution(estudiantes, deathCount, nuevo) {
// Tu código aquí 👈
if (deathCount > 0) {
for (var i = 0; i < deathCount; i++) {
estudiantes.pop();
}
}

estudiantes.push(nuevo);

return estudiantes;
}

Mi aporte:

export function solution(estudiantes, deathCount, nuevo) {
  // Tu código aquí 👈
  var len_estudiantes = estudiantes.length;

  if (deathCount === 0) {
    estudiantes.push(nuevo);
    return estudiantes;

  } else if (deathCount > 0) {
    for (var i = 1; i <= deathCount; i++) {
      estudiantes.pop(estudiantes[len_estudiantes - i]);
    }
    estudiantes.push(nuevo);
    return estudiantes;
  }  
}


    var nuevo = ["daniel"];
    var estudiantes = ["jose","maria","pedro"];
    var deathCount = 0;
    var cantidad = (estudiantes.length);

    console.log (cantidad);

        if (deathCount >0) {
            estudiantes.splice (0,deathCount);
            console.log (estudiantes);
             estudiantes.push(nuevo);
             console.log (estudiantes);
        } 
        else if ( deathCount ===0){ 
            estudiantes.push(nuevo);
            console.log (estudiantes);
        }
export function solution(estudiantes, deathCount, nuevo) {
  if (deathCount == 0) {
    estudiantes.push(nuevo);
    return estudiantes;
  } else if(deathCount > 0) {
    for (var i = 0; i < deathCount; i++){
      estudiantes.pop();
    }
    estudiantes.push(nuevo);
    return estudiantes;
  }
}

Me costo un poco entender como hacer que el .pop eliminara la cantidad solicitada, sin embargo haciendo uso de los ciclos, pude realizar el siguiente codigo por mi cuenta.


function solution(estudiantes, deathCount, nuevo) {
/*Realizamos la primer validacion de la entrada de "deathCount"*/
    if (deathCount == 0){
      estudiantes.push(nuevo)
      console.log(estudiantes)
      return estudiantes;

/*al ser mayor utilice un for empezando desde 1 puesto que si es 0 debemos de anadir, asi realizamos el .pop() dentro del ciclo for*/
      
    } else if (deathCount > 0){
      for (let i = 1; i <= deathCount; i++) {
        const item = estudiantes[i];
        estudiantes.pop(item)
      }
/* fuera del ciclo for anadimos a las personas nuevas*/
       estudiantes.push(nuevo)
    }
	return estudiantes;
    console.log(estudiantes)
}

No sé que me paso que lo entendí a la primera…será porque me levante y como tengo la mente en blanco me salió a la primera 😝

Aplique un ciclo while de esta manera:

export function solution(estudiantes, deathCount, nuevo) {
  
  while (deathCount > 0){
    estudiantes.pop();
    deathCount --
  }
  estudiantes.push(nuevo);
  return estudiantes;
}

otra forma

export function solution(estudiantes, deathCount, nuevo) {
if (deathCount === 0) {
estudiantes.push(nuevo)
return estudiantes
} else if (deathCount === 1) {
estudiantes.pop()
estudiantes.push(nuevo)
return estudiantes
} else if (deathCount === 2) {
estudiantes.pop()
estudiantes.pop()
estudiantes.push(nuevo)
return estudiantes
}
}

otra forma

export function solution(estudiantes, deathCount, nuevo) {
while (deathCount > 0) {
estudiantes.pop()
deathCount–
}
estudiantes.push(nuevo)
return estudiantes

}

trolleando un poco XD, lo hice de diferentes formas dagh xd
export function solution(estudiantes, deathCount, nuevo) {

switch (deathCount) {
case 0:
estudiantes.push(nuevo);
break;
case 1:
estudiantes.pop()
estudiantes.push(nuevo);
break;
case 2:
estudiantes.pop()
estudiantes.pop()
estudiantes.push(nuevo);
break;
}

return estudiantes
}

Aquí mi solución:

export function solution(estudiantes, deathCount, nuevo) {
  if (deathCount > 0) {
    estudiantes.splice(-deathCount);
  }
  estudiantes.push(nuevo);
  return estudiantes;
}

Si el valor de ‘deathCount’es mayor que cero, usará el método ‘.splice’ donde pasa como argumento el número del ‘deathCount’, el cual, al estar negativo, eliminará ese número de elementos desde el final al principio del array de estudiantes. Por último, agrega los strings de ‘nuevo’.

En mi caso, me tomo un tiempo averiguar la respuesta, pero para evitar confusiones cuando trabajen con for y usen el var i=0, no es inicializar un i como por ejemplo estudiantes[ i ] si antes de eso no se declararon e inicializaron variables de array por que saldrá un error, en este caso el for var i= y la expresión restante que lo completa la cual será la misma de siempre menor que al momento de inicializar el parámetro dado sin un array el sistema automáticamente hará el loop de una vez tan pronto se halla aplicado la expresion solucion junto con los valores asignados por fuera del parentesis funcion solution. solamente será aplicar la lógica de los arrays asignando el orden de lo que haya que remover y añadir, por supuesto no olviden el return al final de haber inicializado los parametros de la funcion en cada bloque. Otro dato, para evitar que alguno de las input tome las de las hermanas es mejor para los deathCount es mayor o menor que, en ves de eso es mejor aplicarles un igual y asignar el numero que el input esta generando para cada deathCount segun los tres ejercicios. Con eso tomara cada input en la secuencia del orden arriba hacia abajo con el que le corresponde, esto con el fin de no perderse, pero en fin el orden de lo programado no altera el resultado. Adjunto a continuación mi resultado ejemplo:

export function solution(estudiantes, deathCount, nuevo) {
if (deathCount === 0) {
for (var i = 0; i < estudiantes.length; i++) {
estudiantes.push(nuevo);
return estudiantes
}
} else if (deathCount === 1) {
for (var i = 0; i < estudiantes.length; i++) {
estudiantes.pop();
estudiantes.push(nuevo);
return estudiantes
}

} else {
while (deathCount === 2) {
estudiantes.pop();
estudiantes.pop();
estudiantes.push(nuevo);
return estudiantes;
}
}
}
solution([“Nico”, “Zule”], 0, “Santi”);
solution([“Juan”, “Juanita”, “Daniela”], 1, “Julian”);
solution([“Nath”, “Luisa”, “Noru”], 2, “Cami”);

Aquí mi solución

export function solution(estudiantes, deathCount, nuevo) {
  if (deathCount === 0) {
    return [...estudiantes, nuevo];
  } else {
    while (deathCount > 0) {
      estudiantes.pop()
      deathCount--
    }
    estudiantes.push(nuevo)
    return estudiantes
  }
 }
    

Esta es mi solucion, al parecer no la acepta la pagina del curso, pero la prove en la consola y funciona, no se a que se deba , si alguien lo sabe acepto retro.

function solution(estudiantes, deathCount, nuevo) {
    if (deathCount > 0) {
      for (i = 0; i < deathCount; i++){
        var amonosAlv = estudiantes.pop();
      }
  
    }
    var otroMas = estudiantes.push(nuevo);
    return (estudiantes);
  }

Hola comunidad, les muestro mi codigo

export function solution(estudiantes, deathCount, nuevo) {
  while (deathCount > 0) {
    estudiantes.pop()
   deathCount--
  }
  estudiantes.push(nuevo)
 return estudiantes
  }

Lo hice de esta manera:

export function solution(estudiantes, deathCount, nuevo) {
  while (deathCount > 0) {
    estudiantes.pop();
    deathCount -=1;  
  }
  estudiantes.push(nuevo);
  return estudiantes;
}

if (deathCount === 0) {
estudiantes.push(nuevo)
return estudiantes
} else {
for (let i = deathCount; i > 0; i–){
estudiantes.pop()
}
estudiantes.push(nuevo)
return estudiantes
}

Como siempre, dejo abajo mi aporte, esperando les sea de utilidad, recuerden primero remover los estudiantes y después agregar los nuevos.

export function solution(estudiantes, deathCount, nuevo) {
    // Tu código aquí 👈
    //Declarar variables
    var estudiantes = estudiantes;
    var deathCount = deathCount;
    var nuevo = nuevo;

    //Si el parámetro deathCount es igual a 0, debes retornar un array con los 
    //mismos elementos que tenía el array de estudiantes y agregando el elemento 
    //nuevo al final.
    if (deathCount === 0){
        estudiantes.push(nuevo)
        return estudiantes
    }
    //Si el parámetro deathCount es mayor a 0, debes retornar un array con los mismos elementos 
    //del array estudiantes pero eliminando la cantidad de estudiantes que indica el 
    //número deathCount y agregando el elemento nuevo al final.
    else {
        while (deathCount > 0){
            estudiantes.pop("") 
            deathCount = deathCount - 1}
        estudiantes.push(nuevo)
        return estudiantes
    }

  }

Dejo mi solución usando un ciclo do while.

export function solution(estudiantes, deathCount, nuevo) {
  var output = [];
  for (var estudiante of estudiantes) {
    output.push(estudiante);
  }
  if (deathCount > 0) {
    do {
      output.pop();
      deathCount--;
    } while (deathCount >0)
  }
  output.push(nuevo)
  return output;
}
function solution(estudiantes, deathCount, nuevo) {
  if (deathCount === 0) {
    const newArrEstudents = [];
    for (let i = 0; i <= estudiantes.length - 1; i++){
        newArrEstudents.push(estudiantes[i])
    }
    newArrEstudents.push(nuevo);
    return newArrEstudents;
  } 

  if (deathCount > 0) {
    const newArrEstudents = estudiantes
    for (let j = 0; j <= deathCount-1; j++){ 
      
      newArrEstudents.pop()
    }

    newArrEstudents.push(nuevo);
    return newArrEstudents;
  }
export function solution(estudiantes, deathCount, nuevo) {

  if (deathCount === 0) {

    estudiantes.push(nuevo)
    return estudiantes
    
  } else {

    while (deathCount > 0) {

      estudiantes.pop()
      deathCount--
    }
    estudiantes.push(nuevo)
    return estudiantes
    
  }
  
}

// Input
solution(["Nico", "Zule"], 0, "Santi")
solution(["Juan", "Juanita", "Daniela"], 1, "Julian")
solution(["Nath", "Luisa", "Noru"], 2, "Cami")

 

Veo que la solución de otras personas son mas cortas y al pareces mas eficientes, sin embargo en mi lógica y como logre entenderlo comparto mi solución .

export function solution(estudiantes, deathCount, nuevo) {
  // Tu código aquí 👈
  if (deathCount === 0) {
    let nuevoEstudiante = estudiantes.push(nuevo)
    for (const estudiante of estudiantes) {
      return estudiantes
    }
  } else {
    for (let i = 0; i < deathCount; i++) {
      let borar = estudiantes.pop()
    }
    let nuevoEstudiante = estudiantes.push(nuevo)
    for (const estudiante of estudiantes) {
      return estudiantes
    }
  }
}

Bueno mi solución fue así, no tenia ni idea que tenia que poner un let en el for…

<function solution (estudiantes,deathCount,nuevo){
 if(deathCount === 1){
        estudiantes.pop();
        estudiantes.push(nuevo);
        return estudiantes;
    } else
    if( deathCount === 0){
        estudiantes.push(nuevo);
        return estudiantes;
       } else
       if(deathCount === 2){
        for(let i= 0;i<2; i++ ){
            estudiantes.pop();            
        }
        estudiantes.push(nuevo);
        return estudiantes;
       }
}> 

export function solution(estudiantes, deathCount, nuevo) {
switch (true) {
case (deathCount == 0):
estudiantes.push(nuevo)
break;
case (deathCount != 0):
for (let index = 0; index < deathCount; index++) {
estudiantes.pop()
}
estudiantes.push(nuevo)
break
default:
console.log(“Error”)
break;
}
return estudiantes
}
solution([“Nico”, “Zule”], 0, “Santi”)
solution([“Juan”, “Juanita”, “Daniela”], 1, “Julian”)
solution([“Nath”, “Luisa”, “Noru”], 2, “Cami”)

Correcto

Este fue mi solución en base a todo lo que ya prácticamos.

function solution(estudiantes, deathCount, nuevo) {
  while(deathCount >= 0) {
      if(deathCount == 0) {
      estudiantes.push(nuevo)
      return estudiantes
      } else {
          estudiantes.splice(estudiantes.length - deathCount)
          estudiantes.push(nuevo)
          return estudiantes
      }
  }
}

Mi solucion

alerta de spoiler
.
.
.
.

.
.
.


.
.
.
.

export function solution(estudiantes, deathCount, nuevo) {
  for (var i = 0; i < deathCount; i++){
    estudiantes.pop();
  }
  estudiantes.push(nuevo);
  return estudiantes;

Resolución del problema:

Me llevo un rato desarrollar esta solución.
Aplique if…else ya que son dos preguntas las que hay que responder:
.

  1. Si deathCount es igual a cero ?
  2. Si deathCount es mayor a cero ?

.
También, agregue las preguntas:

  1. Si deathCount es igual o mayor a cero ?

Con esta pregunta vemos que si es negativo o un tipo de dato distinto a number sale un mensaje de alerta.

Para trabajar los datos cree un array para aplicar el manejo del indice.

function solution(estudiantes, deathCount, nuevo) {
  let array = [estudiantes, deathCount, nuevo];

  if (array[1] === 0) {

    array[0].push(nuevo);
    return array[0];
  }

  else if (array[1] > 0) {

    for (let i = 0; i < array[1]; i++) {
      array[0].pop();
    }

    array[0].push(nuevo);
    return array[0];
  }
  else {
    return 'Ingrese un número igual o mayo a cero en deathCount';
  }
}

solution(["Nico", "Zule"], 0, "Santi");
solution(["Juan", "Juanita", "Daniela"], 1, "Julian");
solution(["Nath", "Luisa", "Noru"], 2, "Cami");

.
Espero que les sea de ayuda!

Si copian el código y lo ponen en la consola de la web pueden ver los resultados.
.

export function solution(estudiantes, deathCount, nuevo) {
    
    if(deathCount === 0) {
        estudiantes.push(nuevo);
        return estudiantes;
    } else {

        for(let i = deathCount; i > 0; i--) {
            estudiantes.pop();
        }

        estudiantes.push(nuevo);
        return estudiantes;
    }
}

Aquí comparto mi solución, definitivamente se me complico un poco 😄.

export function solution(estudiantes, deathCount, nuevo) {
  // Tu código aquí 👈
  if (deathCount > 0) {
    for (var i = 0; i < deathCount; i++){
      estudiantes.pop();
    }
    estudiantes.push(nuevo);
    return estudiantes
  } else {
    estudiantes.push(nuevo);
    return estudiantes;
}
}
export function solution(estudiantes, deathCount, nuevo) {
  while (deathCount--) {
    estudiantes.pop();
  }
  estudiantes.push(nuevo);
  return estudiantes;

}

export function solution(estudiantes, deathCount, nuevo) {
// Tu código aquí 👈
while (deathCount > 0) {
estudiantes.pop();
deathCount–;
}
estudiantes.push(nuevo);
return estudiantes;
}

mi version de la solución:

  if (deathCount == 0) {

    let newStu = estudiantes.push(nuevo);

    return estudiantes;

  } else {

    for (let i = 0; i < deathCount; i++) {
      let delestu = estudiantes.pop();
    }

    let newStu = estudiantes.push(nuevo);
    return estudiantes;
  }    
} 

Ejercicio completado

export function solution(estudiantes, deathCount, nuevo) {
  // Tu código aquí 👈
  if (deathCount == 0) {
    estudiantes.push(nuevo);
    return estudiantes;
  } else {
    for (var i = 0; i < deathCount; i++){
      estudiantes.pop();
    }
    estudiantes.push(nuevo);
    return estudiantes;
  }
}

export function solution(estudiantes, deathCount, nuevo) {
// Tu código aquí 👈
for (var i = 0; i < deathCount; i++ ) {
estudiantes.pop();
}
estudiantes.push(nuevo);
return estudiantes;
}

comparto mi solución al ejercicio:

Saludos!

Solución conservando los valores originales.
export function solution(estudiantes, deathCount, nuevo) {
// Tu código aquí 👈
if (deathCount == 0) {
var out = estudiantes;
console.log(out);
out.push(nuevo);
console.log(out);
return out;
}
else if (deathCount > 0) {
for (let deadCount = 0; deadCount < deathCount; deadCount++){
var out = estudiantes;
out.pop();
console.log(out);
}
out.push(nuevo);
console.log(out);
return out;
}
}

export function solution(estudiantes, deathCount, nuevo) {
  if (deathCount > 0){
    for (var i = 0; i < deathCount; i++, estudiantes.pop());
  }
  estudiantes.push(nuevo);
  return estudiantes;
}

Mi Solucion:

export function solution(estudiantes, deathCount, nuevo) {
  // Tu código aquí 👈
  if (deathCount == 0) {
    estudiantes.push();
    return estudiantes;
  }
  else {
    for (var i =0; i < deathCount; i++){
      estudiantes.pop();
    }
    estudiantes.push();
    return estudiantes;
  }
}

Mi solución pero con splice.

aqui el resultado:

function solution(estudiantes, deathCount, nuevo) {
  for (deathCount; deathCount > 0; deathCount--) {
    estudiantes.pop();
  }
  estudiantes.push(nuevo);
  return estudiantes;
}

Mi aporte!!

export function solution(estudiantes, deathCount, nuevo) {
  if (deathCount == 0) {
    estudiantes.push(nuevo);
    return estudiantes;
  } else if (deathCount > 0) {
    for (let i = 1; i <= deathCount; i++){
      estudiantes.pop();
    }
    estudiantes.push(nuevo);
    return estudiantes;
  }
}

Definitivamente, hay distintas formas de encararlo. Coincido con la mayoría, que el problema está planteado de manera confusa.

Aquí mi solución:

export function solution(estudiantes, deathCount, nuevo) {
  for (var i = deathCount; i > 0; i--) {
    estudiantes.pop();
  }
  estudiantes.push(nuevo);
  return estudiantes;
}
export function solution(estudiantes, deathCount, nuevo) {
  // Tu código aquí 👈

  if (deathCount == 0) {
    estudiantes.push(nuevo);
  } else {
    for (var i = 0; i < deathCount; i++){
      var eliminarAlumno = estudiantes.pop();
    }
    estudiantes.push(nuevo);
  }
  
  return estudiantes
}

Mi solución

export function solution(estudiantes, deathCount, nuevo) {
  // Tu código aquí 👈
  if (deathCount === 0) {
    estudiantes.push(nuevo);
    return estudiantes;
  }
  if (deathCount > 0) {
    for (var i = 0; i < deathCount; i++) {
      estudiantes.pop();
    }
    estudiantes.push(nuevo);
    return estudiantes;
  }
}
function solution(estudiantes, deathCount, nuevo) {
  while (deathCount > 0) {
    estudiantes.pop();
    deathCount--;
  }
  estudiantes.push(nuevo);
  return estudiantes;
}

export function solution(estudiantes, deathCount, nuevo) {
// Tu código aquí 👈
for (let i = 0; i < deathCount; i++) {
estudiantes.pop();
}
estudiantes.push(nuevo);
return estudiantes;
}

solution([“Nico”, “Zule”], 0, “Santi”)

21/30 Playground: rescata al estudiante
En este caso, el ciclo while se encarga de iterar deathCount veces, eliminando el último elemento del array estudiantes en cada iteración utilizando el método pop(). Luego, se agrega el nuevo estudiante al final del array utilizando el método push(). Finalmente, se retorna el array modificado.

Es importante inicializar una variable i en 0 antes de comenzar el ciclo, y aumentar su valor en cada iteración utilizando i++, para asegurarse de que el ciclo termine después de la cantidad de iteraciones indicadas en deathCount.

export function solution(estudiantes, deathCount, nuevo) {
  let i = 0;
  while (i < deathCount) {
    estudiantes.pop();
    i++;
  }
  estudiantes.push(nuevo);
  return estudiantes;
}

Mmm, batallé bastante jaja. Se me ocurrió trabajar con un while loop, quizás con un for of hubiera sido más fácil.

function solution(estudiantes, deathCount, nuevo) {
  if (deathCount === 0) {
    estudiantes.push(nuevo);
    return estudiantes
  } else {
    while (0 < deathCount) {
      estudiantes.pop();
      deathCount--;
    }
    estudiantes.push(nuevo);
  }
  return estudiantes;
}


me costo entender al principio pero con los ejemplos lo entendí

les comparto mi solución:

revisando la documentación de javascript, la función pop podría servir
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/pop

pero en un apartado utilizan slice para borrar el último elemento

The pop() method is a mutating method. It changes the length and the content of this. In case you want the value of this to be the same, but return a new array with the last element removed, you can use arr.slice(0, -1) instead.

así que teniendo eso en cuenta así quedó mi función

export function solution(estudiantes, deathCount, nuevo) {
  let result = [...estudiantes]
  if (deathCount != 0) {
    result = result.slice(0, deathCount * -1)
  } 
  result.push(nuevo)
  return result
}

Aquí dejo mi código comentado

export function solution(estudiantes, deathCount, nuevo) {
  if (deathCount == 0) {  //esto es en caso de que sea igual a 0 
    estudiantes.push(nuevo);//se agrega el elemento nuevo
    return estudiantes; //se imprime
  } else if (deathCount > 0) { // si es mayor a 0 entra a un ciclo for para ver cuantos estudiantes debera eliminar 
    for (deathCount; deathCount > 0; deathCount--){
      estudiantes.pop(); 
    }
    estudiantes.push(nuevo);
    return estudiantes;
    
  }
}

export function solution(estudiantes, deathCount, nuevo) {
  // Tu código aquí 👈
  return deathCount === 0 ? [...estudiantes, nuevo]
    : [...estudiantes.filter((estudiante, index) => index < estudiantes.length - deathCount), nuevo];
}

export function solution(estudiantes, deathCount, nuevo) {
  if (deathCount === 0) {
    estudiantes.push(nuevo);
    return estudiantes;
  }
  if (deathCount > 0) {
    for (let i = 0; i < deathCount; i++){
      estudiantes.pop();
    }
    estudiantes.push(nuevo);
    return estudiantes;
   }
}

export function solution(estudiantes, deathCount, nuevo) {

for (var i = 0; i < deathCount; i++) {
estudiantes.pop();
}
estudiantes.push(nuevo);
return estudiantes;
}

Aun no domino los loops asi que hice con if

export function solution(estudiantes, deathCount, nuevo) {
  if (deathCount === 0) {
    var agregar = estudiantes.push(nuevo);
    return (estudiantes);
  } else if (deathCount === 1) {
    var eliminar = estudiantes.pop("Daniela");
    var agregar = estudiantes.push(nuevo);
    return (estudiantes);
  } else if (deathCount === 2) {
    var eliminar1 = estudiantes.pop("Luisa");
    var eliminar1 = estudiantes.pop("Noru");
    var agregar1 = estudiantes.push(nuevo);
    return (estudiantes);
  }
}
undefined