2010-12-03 3 views
0

У меня есть следующие переменная:Возвращающиеся объекты Javascript

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

Тогда для того, чтобы получить правильный тег я работаю на I построил функцию:

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

И в основном объеме Я называю это:

currentTag = getCurrentTag('Bold'); 

Но currentTag всегда «не определено».

Как это исправить?

Gidi

+0

И поэтому «использование JQuery» не является большой панацеей это утверждал. Javascript иногда работает сам по себе. – annakata 2010-12-03 14:39:08

+0

jQuery - это библиотека, а не полный язык. – 2010-12-03 14:41:01

ответ

1

Вы никогда не возвращают результат $.each().

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

использование jQuerys .each() или for..in петли к петле над массивом является ненужным (медленно). Поскольку $.each() применяет функцию обратного вызова для каждого вмешательства, вы возвращаете это значение этой анонимной функции. Вы никогда не возвращаетесь с getCurrentTag()

1

Используйте встроенную функцию javascript. Здесь нет необходимости использовать jQuery.

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

Зачем использовать массив? Это было бы намного чище с простым объектом пар значений.

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

Все, что зацикливание с вашим образом делать это будет медленно:

Смежные вопросы