Bonjour,

mon problème est que ma boucle for ne va pas jusqu'au bout pour lire toutes les valeurs d'un tableau.

Voici le code javascript très simplifié du problème :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 
<script type="text/javascript">
 
/*On crée un array qui contient 9 chiffres*/
tableau = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
 
/*On crée une fonction qui va servir supprimer toutes les valeurs d'un tableau passé en paramètre :*/
function supprimerValeurs(array)
{
	/*On crée une copie de l'array, car c'est dans cette copie qu'on va supprimer toutes les valeurs :*/
	copyArray = array;
 
	/*On fait une boucle for sur le tableau array pour supprimer toutes les valeurs dans copyArray*/
	for(j = 0; j < array.length; j++)
	{
		/*On supprime la valeur dans la copie copyArray*/
		copyArray.splice(array.indexOf(j), 1);	
 
		/*On affiche dans la console la progression de l'incrémentation :*/
		console.log(j);	
	}
}
 
/*On exécute la fonction pour supprimer toutes les valeurs du tableau*/
supprimerValeurs(tableau);
 
</script>
Et après l'exécution de ce code, voici ce que j'ai dans la console :
, alors que je devrais avoir :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
0
1
3
4
5
6
7
8
9
=> donc ça veut dire que la boucle for s'arrête à 4 au lieu d'aller jusqu'au bout, càd jusqu'à 9.

Apparemment, quand je commente la ligne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
copyArray.splice(array.indexOf(j), 1);
, ça va bien jusqu'au bout.

Mais pourquoi ça ne va pas jusqu'au bout ?

Merci d'avance, cordialement.

PS : Je sais que je peux supprimer toutes les valeurs d'un tableau en faisant juste tableau = [];, mais je ne veux pas le faire, car dans le script complet, il y a d'autres traitements dans la boucle for en question.