Удаление элементов из массива во время итерации в цикле while

#javascript #arrays #while-loop

#javascript #массивы #цикл while

Вопрос:

Я хочу получать случайные имена из nameArray и каждый раз удалять этот элемент, чтобы в итоге у меня были все имена, а nameArray пусто. В консоли ничего не отображается.

 let i;
let nameArray = ['Chara','Lisette','Corine','Kevin','Carlee'];
while(i < nameArray.length){
let name = nameArray[ Math.floor( Math.random() * nameArray.length )];
   console.log(name);
   delete nameArray[i];
 }
 

Комментарии:

1. Вы создали бесконечный цикл! Это утверждение (i < nameArray.length) всегда верно.

Ответ №1:

i никогда не инициализируется и не обновляется, поэтому цикл while не имеет особого смысла. Вы можете попробовать это вместо:

 let nameArray = ['Chara','Lisette','Corine','Kevin','Carlee'];
while(nameArray.length > 0) { // while the array is not empty
    let i = Math.floor(Math.random() * nameArray.length); // pick a random element index
    console.log(nameArray[i]); // print the element
    nameArray.splice(i, 1); // remove the element from the array
}