Question

Y at-il une différence entre:

 var samples = {
        "TB10152254-001": {
            folderno: "TB10152254",
            ordno: "001",
            startfootage: "",
            endfootage: "",
            tagout: "Y"
        },
        "TB10152254-002": {
            folderno: "TB10152254",
            ordno: "002",
            startfootage: "",
            endfootage: "",
            tagout: "Y"
        },

        "TB10152254-003": {
            folderno: "TB10152254",
            ordno: "003",
            startfootage: "",
            endfootage: "",
            tagout: "Y"
        }
    };

 var samples = new Array();
samples["TB10152254-001"]  = {
            folderno: "TB10152254",
            ordno: "001",
            startfootage: "",
            endfootage: "",
            tagout: "Y"};

samples["TB10152254-002"] = {
            folderno: "TB10152254",
            ordno: "002",
            startfootage: "",
            endfootage: "",
            tagout: "Y"
        };

samples["TB10152254-003"] =  {
            folderno: "TB10152254",
            ordno: "003",
            startfootage: "",
            endfootage: "",
            tagout: "Y"
        };

EDIT:

Je vais reformuler la question: Comment puis-je alimenter le hachage dynamique? Je ne peux pas faire quelque chose comme samples.TB10152254-003 parce que je TB10152254-003 est dynamique ... alors, est-ce possible?

Était-ce utile?

La solution

Les deux fonctionnera, car un tableau est un type d'objet. Mais il n'y a aucun avantage à utiliser un tableau de cette façon, et peut facilement donner des problèmes lorsque vous itérer sur les propriétés en utilisant une for/in.

L'objet serait le type approprié d'utiliser pour les propriétés nommées. Réservez votre utilisation de tableau pour les propriétés de l'index uniquement.


En ce qui concerne votre édition, vous pouvez remplir dynamiquement l'objet de la même façon que la matrice, en utilisant la notation crochets.

   // Create a new empty object. You an use "new Object()" if you wish
var samples = {};

  // Populate the "samples" object in the same way you would an Array.
samples["TB10152254-001"]  = {
            folderno: "TB10152254",
            ordno: "001",
            startfootage: "",
            endfootage: "",
            tagout: "Y"};

samples["TB10152254-002"] = {
            folderno: "TB10152254",
            ordno: "002",
            startfootage: "",
            endfootage: "",
            tagout: "Y"
        };

samples["TB10152254-003"] =  {
            folderno: "TB10152254",
            ordno: "003",
            startfootage: "",
            endfootage: "",
            tagout: "Y"
        };

Autres conseils

Oui. Dans le second exemple d'exemple, vous « abus » le fait qu'un Array comme aussi un Object. Ne pas le faire.

Utilisez Arrays pour les valeurs indexées numériques seulement et pour les tables Objects plaine Kinda de hachage.

Je vous suggère de lire plus sur Arrays et Objects .

En JavaScript, essentiellement tout est un objet. Présentation des tableaux. Mais l'objet Array fournit des méthodes supplémentaires de traitement des données indexées numérique.

Vous pouvez probablement voir la différence le meilleur quand vous faites samples.length dans le second exemple. Un objet simple n'a pas length de propriété, un tableau fait. Pour un tableau, il vous indique le nombre d'éléments stockés dans le tableau. Maintenant, lorsque vous appelez samples.length dans le second exemple, vous obtiendrez 0 parce que le tableau contient en fait aucun élément.

Ce qui pourrait conduire à plus de confusion est le fait que vous avez deux possibilités de propriétés d'objet d'accès: La notation « point », object.property et la « notation de tableau », object['property']. Mais ceci est une fonctionnalité d'objets non de tableaux.

La notation de tableau est très pratique, lorsque vous générer les clés ou avoir le nom de la propriété stockée dans une variable.

Mise à jour:

Comme il est écrit, vous pouvez utiliser la notation de tableau pour créer des propriétés dynamiquement, par exemple:.

var samples = {};

for(var i = 0; i < 4; i++) {
    samples["TB10152254-" + i] = {
        folderno: "TB10152254",
        ordno: i,
        startfootage: "",
        endfootage: "",
        tagout: "Y"
    }
}

Si vous voulez accéder aux propriétés, vous devez utiliser le for...in boucle pour itérer sur les touches:

for(var key in samples) {
    var value = samples[key];
}

Mais attention: Ne jamais utiliser for...in à boucle sur un tableau. Sur la page I lié à est aussi écrit pourquoi.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top