2010-12-03 7 views
0

I ont la variable suivante:de retour des objets en Javascript

var tags = [{name:'Bold', key:'b'}, { name: 'Italic', key:'i'}] 

Ensuite, afin d'obtenir l'étiquette correcte, je travaille sur moi avons construit une fonction:

function getCurrentTag(tagType) { 
    $.each(tags, function() { 
     if (tagType==this.name) { 
      return this; 
     } 
    }); 
} 

Et dans le cadre principal Je l'appelle:

currentTag = getCurrentTag('Bold'); 

Mais currentTag est toujours "indéfini".

Comment puis-je résoudre ce problème?

Gidi

+0

Et voici pourquoi « l'utilisation jquery » est pas la panacée, il est prétendu être. Javascript fonctionne tout seul parfois. – annakata

+0

jQuery est une bibliothèque, pas un langage complet. –

Répondre

1

Vous ne retourne le résultat de $.each().

+0

De plus, un traitement supplémentaire sur la sortie de la fonction $ .each sera nécessaire. Le chemin de Jaynd devrait suffire –

6
function getCurrentTag(tagType) { 
    for(var i = 0, len = tags.length; i < len; i++) { 
     if(tags[i].name === tagType) 
      return tags[i]; 
    } 
} 

utilisant jQuerys .each() ou for..in boucles à boucle sur un tableau est unecessary (lent). Puisque $.each() applique une fonction de rappel par interaction, vous renvoyez cette valeur à cette fonction anonyme. Vous ne revenez jamais de getCurrentTag()

1

Utilisez une fonction javascript native. Pas besoin d'utiliser jQuery ici.

var tags = [{name:'Bold', key:'b'}, { name: 'Italic', key:'i'}], 
    getCurrentTag = function (tags, name) { 
     var i = 0; 
     for (i = 0; i < tags.length; += 1) { 
      if (tags[i].name === name) { 
       return tags[i]; 
      } 
     } 
     return False; 
    } 


getCurrentTag(tags, 'Bold'); 
0

Pourquoi utiliser un tableau? Ce serait tellement plus propre avec un simple objet de paires de valeurs de nom.

var tags = {'Bold':'b','Italic':'i'}; 
function getCurrentTag(tagType) { 
    return tags[tagType] || null; 
} 

Tout cela en boucle avec votre façon de le faire sera lent: