Y a-t-il une syntaxe pour passer des touches composites, i.e. listes et objets,
Comme l'exemple ci-dessous, ou est-ce que la conception?
> obj = {}; > obj[[1, 2]] = 3; 3 > [1, 2] in obj; > true
3 Réponses :
Avez-vous besoin du Si vous voulez simplement utiliser mais à nouveau, je suppose que vous voudriez garder [1, 2] code> pour être préservé comme une matrice? Qu'est-ce que cela vous permettrait exactement de faire? Je ne connais pas les "touches composites", donc peut-être une courte explication pour un lien à clarifier aiderait à mieux comprendre votre problème.
[1, 2] code> En tant que clé, vous pouvez toujours utiliser cela comme chaîne: p>
[1, 2] code > En tant que tableau. p> p>
Pour que les objets soient utilisés comme touches, chaque objet devrait mettre en place une méthode de code HASHCODE, comme Java. Depuis que HashCode est une grande source de bogues, des clés JavaScript uniquement à des cordes
@JuanMendes Re: "Depuis que HashCode est une grande source de bogues" - citation nécessaire.
objet noms de propriété em> dans JavaScript sont à la fin juste des chaînes, votre deuxième exemple semble fonctionner car l'accesseur de propriété de support convertit le Un autre exemple: p> Voir aussi: p> [1, 2] code> expression code> à < Code> chaîne code> (retour
"1,2" code>), par exemple:
Donc, les objets sont convertis en cordes, évidemment je ne savais pas que
Je pense que vous devriez ajouter quelque chose à répondre à la question, il souhaite pouvoir utiliser des objets littéraux. Op pourrait utiliser a = {"1,2": bonjour} code>, puis l'accédez à l'aide d'un [[1,2]], semble bizarre mais que tu veux faire
@Nick Dandoulakis: Oui, même des tableaux sont clés par des chaînes. Essayez ceci var arr = ["bonjour", "monde"]; alerte (arr ["1"]); code> jsfiddle.net/mendesjuan/27z4u
@CMS, @juan: Je pourrais utiliser des chaînes pour clés, car JavaScript ne prend pas en charge ce que je veux, et le lien ci-dessus à Jshashable code> semble intéressant. Je vais devoir le tester.
Jshashable semble bon, méfiez-vous qu'il est basé sur une égalité stricte, donc deux objets qui ont l'air identique ne correspondent pas au même objet. Pour la meilleure mise en oeuvre de hashtable, vous devez implémenter un équivalent et une méthode de hashcode pour vos objets, comme Java
@Juan, voulez-vous dire, par exemple, [1, 2] code> et
[2, 1] code> aura des hachages différents?
@Nick: Les hachages n'existent que si vous les implémentez, vous pouvez donc décider si ceux-ci devraient donner le même code de hachage. Depuis leur site Web, il semble que ce n'est pas vraiment une carte de hachage, sauf si vous ne le mettez en œuvre. Sans fonction de hachage, tout se passe dans le même seau, il va donc essentiellement de rechercher dans l'ensemble de la matrice. Ce que je voulais vraiment dire, c'est que si vous faites hash.set ([1,2], "bonjour") code> puis essayez de le récupérer en utilisant
hachage ([1,2]) code>, alors cela échouera car les deux tableaux ne sont pas le même objet (en utilisant ===). Cependant,
a = [1,2]; hash.set (a, "bonjour"); hash.get (a) code> fonctionnera. Lire la section 'codes de hash'
Je ne sais pas si cela changeait au fil du temps, mais je viens d'essayer d'utiliser ceci, et [1, 2] code> ->
["1"] code>
Si vous ne voulez pas faire de la concaténation de chaîne, vous pouvez utiliser des cartes imbriquées, puis une enveloppe pour rendre le code moins verbeux. Voici un exemple de type type.
Pourquoi avez-vous besoin de clés composites?
@ NT3RP, les résultats SQL seront chargés sur des objets JavaScript et des clés composites seront nécessaires.