2011-02-07 5 views
1

У меня есть этот объект:Как перебрать этот объект

var navArray = { 
    '#item1' : 0, 
    '#item2' : 1, 
    '#item3' : 2, 
    '#item4' : 3, 
    '#item5' : 4, 
    '#item6' : 5 
} 

идент вар в коде ниже это число, и мне нужно, чтобы выяснить, какое имущество соответствует в массиве ... так что если ident is 1 Я хочу получить # item2 назад ..

Как это сделать?

var navArray = { 
    '#item1' : 0, 
    '#item2' : 1, 
    '#item3' : 2, 
    '#item4' : 3, 
    '#item5' : 4, 
    '#item6' : 5 
} 
if(typeof(ident) === "number") { 
    for(i in navArray) { 
    } 
} 
+1

navArray [я] должен сделать это –

+2

Ваш 'navArray' не является массивом вообще. Что-то не так с использованием 'navArray = ['# item1', '# item2', '# item3', ...]'? Тогда вы сможете индексировать его непосредственно: 'navArray [ident]'. –

+0

@K Иванов: ваше решение предполагает, что данные сортируются. elduderino, этот объект всегда один и тот же, так что сортировка является безопасным предположением? – Jordan

ответ

7

Это должно работать:

var ident = 1, 
    target = null; 
for (var key in navArray) { 
    if (navArray.hasOwnProperty(key)) { 
     if (navArray[key] === ident) { 
      target = key; 
      break; 
     } 
    } 
} 

alert (target); // "#item2" 
+0

В этом случае это будет: 'navArray.hasOwnProperty (key)' not return true? ? – yankee

+1

@yankee: согласно Crockford: «Имейте в виду, что члены, которые добавлены к прототипу объекта, будут включены в перечисление. Разумно программировать с помощью метода hasOwnProperty, чтобы отличать истинных членов объекта». – ThatGuy

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