2016-10-14 3 views
-1

Im пытается решить проблему с javascript. У меня есть. У меня есть объект с большим количеством свойств. Я хочу перебрать свойства, чтобы найти ВСЕ записи ввода, которые пользователь делает. Я написал for..in-loop, но не дал мне никакой информации.Итереть объект и перечислить все найденные свойства, соответствующие вводу

Любые идеи?

var numbers = { 
    "Group1": "3300", 
    "Group2": "1200", 
    "Group3": "5000" 
}; 

function test(){ 

     var input = document.getElementById("inputTxt").value; 

     for(var group in numbers){ 

      if(numbers[group] == input){ 
       console.log(numbers[group]) 
      } 
     }   
} 

Этот код ничего не регистрирует в моей консоли. Что я делаю не так?

Спасибо!

+0

Возможно, ваш ввод не является «3300» или «1200» или «5000» или вы не вызываете 'test'. – ASDFGerte

+0

https://jsfiddle.net/L3droy1m/ работает, проверьте входное значение, как вы думаете. –

+0

Научитесь использовать отладчик JavaScript, встроенный в ваш браузер. Вы можете сделать один шаг через свой код и посмотреть на все переменные и другие значения на каждом этапе пути. Это намного лучше, чем просто использование 'console.log()'. Вот [учебник для Chrome DevTools] (https://developer.chrome.com/devtools). Другие браузеры имеют похожие отладчики. Просто добавьте оператор 'debugger;' в начале вашей функции 'test()', и он остановится в отладчике, когда он туда попадет, если вы откроете DevTools. Также: *** Вы когда-нибудь называете функцию 'test()'? *** –

ответ

1

Попробуйте

Object.keys(numbers).forEach((key) => { 
    if (numbers[key] == input) { 
     console.log(key + " " + numbers[key]); 
    } 
}); 
+1

Object.keys - гораздо более надежный способ получить свойства данного объекта. for.in петли могут иногда приводить к неожиданным неожиданностям, когда у вас нет полного понимания того, как работает объект. Этот метод также более ясен, который никогда не болит. – Turk

0

, который работает с для в цикле

var numbers = { "Group1": "3300", "Group2": "1200", "Group3": "5000" }; 
var input = "3300"; 
for(var group in numbers) 
    if(numbers[group] == input) 
     console.log(group + " " + numbers[group]); // Group1 3300 
Смежные вопросы