web-dev-qa-db-fra.com

javascript Push tableau multidimensionnel

J'ai quelque chose comme ça:

    var valueToPush = new Array();
    valueToPush["productID"] = productID;
    valueToPush["itemColorTitle"] = itemColorTitle;
    valueToPush["itemColorPath"] = itemColorPath;

    cookie_value_add.Push(valueToPush);

le résultat est [];

qu'est-ce que je fais mal?

38
sinini

Les tableaux doivent avoir des index entiers basés sur zéro en JavaScript. Alors:

var valueToPush = new Array();
valueToPush[0] = productID;
valueToPush[1] = itemColorTitle;
valueToPush[2] = itemColorPath;
cookie_value_add.Push(valueToPush);

Ou peut-être souhaitez-vous utiliser des objets (qui sont des tableaux associatifs):

var valueToPush = { }; // or "var valueToPush = new Object();" which is the same
valueToPush["productID"] = productID;
valueToPush["itemColorTitle"] = itemColorTitle;
valueToPush["itemColorPath"] = itemColorPath;
cookie_value_add.Push(valueToPush);

qui équivaut à:

var valueToPush = { };
valueToPush.productID = productID;
valueToPush.itemColorTitle = itemColorTitle;
valueToPush.itemColorPath = itemColorPath;
cookie_value_add.Push(valueToPush);

C'est une différence fondamentale et cruciale entre les tableaux JavaScript et les objets JavaScript (qui sont des tableaux associatifs) que tout développeur JavaScript doit comprendre.

68
Darin Dimitrov

Utilisation []:

cookie_value_add.Push([productID,itemColorTitle, itemColorPath]);

ou

arrayToPush.Push([value1, value2, ..., valueN]);
7
user2560779

En JavaScript, le type de magasin de clés/valeurs que vous essayez d'utiliser est un littéral d'objet, plutôt qu'un tableau. Vous créez par erreur un objet de tableau composite dont les propriétés sont basées sur les noms de clé que vous avez fournis, mais la partie de tableau ne contient aucun élément.

Déclarez plutôt valueToPush en tant qu’objet et transmettez-le à cookie_value_add:

// Create valueToPush as an object {} rather than an array []
var valueToPush = {};

// Add the properties to your object
// Note, you could also use the valueToPush["productID"] syntax you had
// above, but this is a more object-like syntax
valueToPush.productID = productID;
valueToPush.itemColorTitle = itemColorTitle;
valueToPush.itemColorPath = itemColorPath;

cookie_value_add.Push(valueToPush);

// View the structure of cookie_value_add
console.dir(cookie_value_add);
5
Michael Berkowski