2010-08-04 4 views
0

var a = new array(); a [1] = 'A'; b [10] = 'B'; console.log (a); /[non définie, "A", non défini, non défini, non défini, non défini, non défini, non défini, non défini , non défini, "B"]/ Je veux supprimer élément non défini mais quel est le processus ??javascript problème d'index de tableau!

Répondre

6

Tout d'abord, jQuery n'a rien à voir avec cela. Deuxièmement, les tableaux sont «remplis automatiquement». Si vous définissez l'index 10, tous les index 0 - 9 seront occupés automatiquement, c'est exactement comme ça que fonctionnent les tableaux Javascript.

Qu'est-ce que vous cherchez est probablement un objet:

var a = {}; 
a[1] = 'A'; 
a[10] = 'B'; 

ou

var a = { 
    1 : 'A', 
    10 : 'B' 
}; 
+0

avoir besoin d'une liste de valeur –

1
bien

, pour enlever ces undefined pièces ne

a[0] = 'A'; 
a[1] = 'B'; 

Dans votre extrait, vous remplissez l'élément avec l'index 10 qui force le ECMAScript pour créer un tableau avec 10 fields. Il n'y a aucune définition pour tous ces champs entre 1 et 10, ce qui signifie que ceux-ci sont correctement undefined. Pour supprimer ces champs, vous devez définir une valeur correcte ou map les valeurs non-undefined dans un nouveau tableau qui serait tout simplement inutile si vous créez un tableau correct en premier lieu.

Créez un vrai object au lieu d'un tableau (qui est aussi un objet) pour avoir le comportement souhaité.

var a = {}; 

a[1] = 'A'; 
a[2] = 'B'; 

console.log(a); 
+0

mais j'ai besoin numéro d'index comme si je l'ai fait :(mais je –

1

Dans ce cas, vous pouvez utiliser un Object au lieu d'un Array comme ceci:

var a = {}; // or var a = new Object(); 
a[1] = 'A'; 
a[10] = 'B'; 
a['foo'] = 'bar'; 
a.bar = 'foo'; // same as a['bar'] = 'foo'; 
console.log(a); 
1

Les tableaux commencent toujours à 0 et montent jusqu'au dernier index rempli. Vous pouvez utiliser un objet pour résoudre votre problème:

var a = {}; 
a[1] = 'A'; 
a[10] = 'B';