Javascript: multi-dimensionnelle de l'objet
Je veux créer un objet, en commençant par quelque chose comme:
var map = {};
Alors, je veux ajouter des éléments avec cette fonction:
add = function(integerA, objectB) {
map[objectB.type][integerA] = objectB;
}
Donc, c'est un hasard de la structure de l'objet que je veux réaliser:
map = {
'SomeType' : { 0 : 'obj', 2 : 'obj', 3 : 'obj' },
'OtherType' : { 0 : 'obj', 5 : 'obj' },
};
Maintenant, mon problème. Je ne peux pas faire map[objectB.type][integerA] = objectB;
parce que map[objectB.type]
n'est pas défini. J'ai pu résoudre ce problème en vérifiant si map[objectB.type]
existe par le biais d'un if et créer map[objectB.type] = {};
lorsque nécessaire.
Sinon je ne pourrais pré-charge tous les types d'objet. Cependant, je préfère ne pas avoir à le faire.
Ma question: est-il possible que je peux créer l'objet "à la volée", sans avoir à vérifier si le type existe déjà à chaque fois que je veux l'appeler le add
fonction ou à pré-charger tous les types?
Il est important que ma fonction d'ajout est tellement rapide que possible et que l'objet map est correcte, parce que j'ai besoin de lire et d'écrire beaucoup de choses en peu de temps (c'est une animation /application de jeu).
ce lien a la réponse pour ur de la question stackoverflow.com/questions/7744611/...
OriginalL'auteur user8363 | 2011-07-10
Vous devez vous connecter pour publier un commentaire.
Non, il n'y a aucune autre façon de créer des objets à la volée. Seulement à vérifier l'existence à chaque fois:
Si vous voulez améliorer les performances, vous pouvez envisager de quelques-mise en cache de la technique.
OriginalL'auteur bjornd
Si vous utilisez la carte uniquement pour les recherches et vous n'avez pas besoin d'effectuer une itération sur les dimensions, vous pouvez fusionner vos dimensions en une seule touche. Par exemple:
OriginalL'auteur casablanca
Vous pouvez utiliser l'opérateur booléen " OU " raccourci (ce qui évite au moins explicite
if
). Il pourrait ne pas être lisible:Cela fonctionne car une affectation renvoie en fait à la valeur qui lui a été attribué et l'un OU l'expression retourne la première valeur qui donne
true
.Je ne pense pas que l'aide d'un
if
a aucun impact sur les performances (en fait, la façon ma réponse pourrait être encore "plus lent").OriginalL'auteur Felix Kling