Trouver string-clé dans le tableau Javascript
1) j'ai ce tableau Javascript:
lang=new Array();
lang["sq"]="Albanian";
lang["ar"]="Arabic";
lang["en"]="English";
lang["ro"]="Romanian";
lang["ru"]="Russian";
2) Dans un autre processus, il y a un retour de la valeur dans une variable:
result.detectedSourceLanguage = 'en';
3) Maintenant, je veux imprimer la langue nom au complet en faisant ceci:
alert(lang[result.detectedSourceLanguage]);
La boîte de dialogue affiche: undefined
Des idées?
BTW: im à l'aide de JQuery, JQuery solutions sont les bienvenus.
Avez-vous essayez à l'aide de l'indice? 0,1,2,3? Lors de la déclaration de variable avez-vous utilisé le VAR? Essayez également d'appeler cette variable "resultDetectedSourceLanguage"... Ne sais pas quoi dire d'autre... 🙂
Peut-être vérifier que vous avez la matrice définie par le temps que vous tentez d'y accéder. BTW, Qu'entendez-vous par "tout autre procédé"?
si je l'appelle: alert(lang['fr']); il imprime en anglais comme il se doit. Le problème, c'est quand je fais ceci: alert(lang[var1]); (où var1 contient 'fr' valeur).
Bien que l'affirmation est impossible, quelle que soit votre utilisation abusive du Tableau (ce qui devrait être l'Objet, {}), JavaScript ne permet pas ce, et votre code ci-dessus ne fonctionne pas comme prévu. Il y a autre chose qui se passe; post complet d'un cas de test qui échoue.
Peut-être vérifier que vous avez la matrice définie par le temps que vous tentez d'y accéder. BTW, Qu'entendez-vous par "tout autre procédé"?
si je l'appelle: alert(lang['fr']); il imprime en anglais comme il se doit. Le problème, c'est quand je fais ceci: alert(lang[var1]); (où var1 contient 'fr' valeur).
Bien que l'affirmation est impossible, quelle que soit votre utilisation abusive du Tableau (ce qui devrait être l'Objet, {}), JavaScript ne permet pas ce, et votre code ci-dessus ne fonctionne pas comme prévu. Il y a autre chose qui se passe; post complet d'un cas de test qui échoue.
OriginalL'auteur Andres SK | 2009-09-06
Vous devez vous connecter pour publier un commentaire.
Un
Array
utilise les index entiers. Vous voulez probablement unObject
, qui prend en charge la chaîne d'indices:(Le dernier exemple est probablement mieux que d'autres JS programmeurs seraient heureux avec elle.)
['val 1', 'val 2', 'val 3, ...]
de la syntaxe. Il est probable que quelque part dans JQuery ou ailleurs une sérialisation/désérialisation qui se passe à la table, et les autres propriétés sont perdues.Je sais qu'une
Array
est unObject
, mais vraiment, vous devez le traiter comme un tableau séquentiel (commestd::vector
en C++STL) et non pas un tableau associatif (commestd::map
en C++STL ou PHP-comme des tableaux), pour éviter toute confusion. La sérialisation/conversion peut être le problème comme vous le suggérez, Adam.OriginalL'auteur strager
Ce script génère une boîte de message (vérifié dans IE & FF) qui dit "à l'anglaise":
Le seul problème pourrait être le
result
objet.OriginalL'auteur Eran Betzalel
Vérifier le type et la valeur de
result
(etresult.detectedSourceLanguage
). Il pourrait être l'un des suivantsresult
n'est pas définiresult
n'est pas un objet ou n'ont pas d'attribut nommédetectedSourceLanguage
result.detectedSourceLanguage
n'est pas une chaîne ou il n'y a pas de clé danslang
(alors qu'il est censé retournerundefined
pouralert(lang[result.detectedSourceLanguage]);
)BTW, ton problème n'a rien à voir avec jQuery
OriginalL'auteur Imran
Essayer d'alerte du résultat.detectedSourceLanguage immédiatement avant son utilisation. Il ya une chance qu'il n'a pas d'égal à ce que vous attendez. Cela devrait fonctionner.
quel navigateur utilisez-vous cette contre?
OriginalL'auteur David Andres