2014-10-15 3 views
-2

Я пытаюсь динамически находить определенное значение внутри многомерного объекта.Найти значение в многомерном объекте Javascript

Чтобы создать объект, я делаю это:

var inViewElements = {}; 

$('.story-section') 
    .each(
     function(index){ 

      var sectionId = 'story-section-' + Math.floor(Math.random() * (1000 - 1 + 1)) + 1; 

      $(this).attr('id', sectionId); 

      var inViewHeight = $(this).height(), 
       inViewPosTop = $('#' + sectionId).offset().top, 
       inViewPosBottom = ((inViewPosTop + inViewHeight) - (inViewTolerence + inViewHeight)); 

      inViewElements[inViewPosTop] = { 
       id: sectionId, 
       height: inViewHeight, 
       bottom: inViewPosBottom 
      }; 

      debug('Inview', 'Object', sectionId);          
      debug('Inview', 'Height', inViewHeight); 
      debug('Inview', 'Offset Top', inViewPosTop); 
      debug('Inview', 'Offset Bottom', inViewPosBottom); 

     } 
    ); 

console.log(inViewElements); 

И выход выглядит следующим образом:

enter image description here

То, что я пытаюсь сделать, это сравнить, если другое значение переменной , например:

var currentPos = '3038'; 

Соответствует любому из ключей объектов. Например. 3038 или 2038 и т. д.

Я изо всех сил пытаюсь понять это!

+1

'inViewElements [currentPos]'? –

+0

'hasOwnProperty' – tymeJV

+0

Это не многомерное. У вас есть массив объектов. – lincolnk

ответ

0

Итак, вы пытаетесь найти объект, который содержит определенное значение?

Невозможно запросить массив/объект в Javascript. Поскольку вы не используете инкрементные индексы, я бы предложил использовать цикл foreach, используя условный оператор, чтобы проверить, соответствует ли свойство, которое вы пытаетесь сопоставить, со значением, которое вы ищете.

Быстрее использовать цикл for, однако для этого потребуются инкрементные индексы.

0

Если г входа переменной отклика, через который ур выход пришел, то и может использовать эту функцию

for(var x in response){ 
    if(x == 3038) { 
     // do something 
    } 
} 

или

for(var x in response){ 
    if(x == currentPos){ 
     //dosomething 
    } 
} 

и может дать мне правильный код, как у положить значения в консоль log, поэтому я отредактирую ответ правильно, на ваш вопрос

+0

Я обновил исходный вопрос с полным кодом. То, что я пытаюсь сделать, - сравнить позицию смещения прокрутки от страницы, до значения в объекте. Если это соответствует любому, тогда он будет запускать функцию. –

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