/ / Le tableau Javascript contient uniquement undefined après l’initialisation, pas les valeurs données - javascript, tableaux, undefined

Le tableau Javascript contient seulement undefined après l'initialisation, pas les valeurs données - javascript, arrays, undefined

Je pensais que je savais comment déclarer des tableaux javascript, mais dans ce script, je reçois une boucle infinie de undefined éléments dans le tableau.

Je déclare trois tableaux de nombres, deux d'entre eux ayant plusieurs valeurs et l'autre ayant une valeur unique.

J'ai une instruction switch qui assigne l'un des trois tableaux à un nouveau nom de variable cluster_array

Quand je lance un for faire une boucle cluster_array, Je reçois une boucle infinie et chaque élément si undefined

Qu'est-ce que je rate?

<script type="text/javascript">
var ga_west_cluster = new Array(10,11,12,14,74,75,76,77,78,79,80,81,82,83,85,86,87,88,89,90,91,92,295,296);

// original bad array
var ga_east_cluster = new Array(84);
// added an extra (dummy) value and it works fine
var ga_east_cluster = new Array(1,84);
var sc_cluster      = new Array(93,94,95,96,97,98,99,100,101,102,103);
</script>

Voici la alert texte:

var test_message        = "cluster datan";
for(var k=0;k<cluster_array.length;k++)
test_message    += "value: "+cluster_array[k]+"n";

Test d'alerte

Réponses:

14 pour la réponse № 1

Ne "initialisez pas les tableaux comme ça. Faites toujours ceci à la place:

var myarray = [value, value, value, ... ];

Le constructeur "Array ()" est terriblement conçu. La forme à un seul argument, lorsque l'argument est un nombre, est interprétée comme une demande d'initialisation d'un tableau contenant autant de valeurs "vides". C’est une chose inutile à faire, donc en général, vous feriez bien mieux d’utiliser la notation constante de tableau (comme dans mon exemple ci-dessus).

Cela ne semble plus se produire dans le monde modernenavigateurs, mais j’ai juré qu’il était un temps où au moins certains navigateurs allouaient effectivement de la mémoire au constructeur à argument unique, ce qui n’était pas vraiment utile, mais dangereux pour le code qui pourrait accidentellement passer par un très grand nombre.