2017-10-17 16 views
1

Je crée un tableau dans Javascript où l'id de produit est utilisé pour la clé. Comme la clé est numérique, le tableau remplit les espaces vides.Forcer javascript key integer remplit array avec null

Ainsi, par exemple, si je n'avais que deux produits et leurs papiers d'identité étaient 5 et 7, je ferais quelque chose comme:

var arr = [] 
arr[5] = 'my first product'; 
arr[7] = 'my second product'; 

Ce tableau est ensuite transmis à un script PHP, mais lors de l'impression du tableau, Je reçois ce qui suit;

Array (
    [0] = null 
    [1] = null 
    [2] = null 
    [3] = null 
    [4] = null 
    [5] = My first product 
    [6] = null 
    [7] = My second product 
) 

mes numéros d'identification sont en fait 6 chiffres, de sorte que lors de la boucle sur le tableau, il y a 100.000 itérations, même si je n'ai en fait deux produits.

Comment puis-je créer le tableau afin que les valeurs nulles ne soient pas entrées? J'ai pensé à faire de la clé une chaîne à la place, mais comme le tableau est construit dynamiquement, je ne suis pas sûr de savoir comment faire cela.

var arr = []; 
for(var i=0; i<products.length; i++) 
{ 
    array[products[i].id] = products[i].name; 
} 

Merci

+0

utiliser une carte, où id est la – Andrea

+0

clé est la question sur un tableau itérer clairsemée, ou comment stocker les données sans utiliser un tableau? –

+2

Un objet ne serait-il pas une meilleure solution? 'var arr = {}; arr [5] = 'mon premier produit'; arr [7] = 'mon deuxième produit'; ' – Craicerjack

Répondre

1

Pour l'itération du tableau, vous pouvez utiliser Array#forEach, qui ignore les éléments fragmentés.

var array = []; 
 

 
array[5] = 'my first product'; 
 
array[7] = 'my second product'; 
 

 
array.forEach(function (a, i) { 
 
    console.log(i, a); 
 
});

Pour une meilleure organisation, vous pouvez utiliser un objet, avec un accès direct avec l'identifiant donné.

{ 
    5: 'my first product', 
    7: 'my second product' 
} 
0

javascript Obliger entier clé remplissages tableau avec null

Vous déclarez un tableau vide puis la définition des valeurs en 6e et 8e élément du tableau. Cela laisse les valeurs des autres éléments comme nulles.

Si vous n'avez pas l'intention de push éléments dans la matrice, c'est-à-dire d'utiliser des objets. Quelque chose comme,

var obj = {}; 
obj[5] = "my first product"; 
obj[7] = "my second product"; 

Cela signifie que l'objet créé est:

obj = { "5": "mon premier produit", "7": "mon second produit"}

0

var arr = [] 
 
arr[5] = 'my first product'; 
 
arr[7] = 'my second product'; 
 
let result = arr.filter(ar => ar != null); 
 
console.log(result);