【问题标题】:Find Value in Multidimensional Object Javascript在多维对象 Javascript 中查找值
【发布时间】:2014-10-15 16:07:33
【问题描述】:

我正在尝试在多维对象中动态查找特定值。

要创建对象,我这样做:

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);

输出如下:

我想要做的是比较另一个变量值,例如:

var currentPos = '3038';

匹配任何对象键。例如。 3038 或 2038 等。

我正在努力解决这个问题!

【问题讨论】:

  • inViewElements[currentPos]?
  • 这不是多维的东西。你有一个对象数组。

标签: javascript jquery object multidimensional-array


【解决方案1】:

所以您正在尝试搜索包含特定值的对象?

无法在 Javascript 中查询数组/对象。由于您没有使用增量索引,我建议使用 foreach 循环,使用条件语句检查您尝试匹配的属性是否等于您正在查找的值。

使用 for 循环会更快,但这需要增量索引。

【讨论】:

    【解决方案2】:

    如果你记录了你的输出所通过的响应变量,那么你可以使用这个函数

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

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

    您能否给我正确的代码,说明您如何将值放入控制台日志,以便我根据您的问题正确编辑答案

    【讨论】:

    • 我已经用完整的代码更新了原始问题。我要做的是将页面到的滚动偏移位置与对象中的值进行比较。如果这与任何匹配,那么它将运行一个函数。
    猜你喜欢
    • 2015-10-05
    • 2012-09-06
    • 2019-09-21
    • 2012-05-17
    • 2015-06-10
    • 1970-01-01
    • 1970-01-01
    • 2011-10-02
    • 1970-01-01
    相关资源
    最近更新 更多