如何使用javascript检查多维对象中是否存在值

如何使用javascript检查多维对象中是否存在值,javascript,Javascript,我的问题是我有一个对象的格式: outerObject = new Object(); outerObject["dynamicNameHere"] = new Object(); outerObject["dynamicNameHere"]["position"] = 30; outerObject["dynamicNameHere"]["value"] = 50; outerObject["dynamicNam

我的问题是我有一个对象的格式:

        outerObject = new Object();

        outerObject["dynamicNameHere"] = new Object();
        outerObject["dynamicNameHere"]["position"] = 30;
        outerObject["dynamicNameHere"]["value"] = 50;
        outerObject["dynamicNameHere"]["done"] = false;

        outerObject["otherDynamicNameHere"] = new Object();
        outerObject["otherDynamicNameHere"]["position"] = 100;
        outerObject["otherDynamicNameHere"]["value"] = 500;
        outerObject["otherDynamicNameHere"]["done"] = true;
        var globalretunval='';
        function searchObj( obj ,testval )
        {
            for( var key in obj ) 
            {
                if( typeof obj[key] === 'object' )
                {
                    searchObj( obj[key] , testval);
                }
                if( obj[key] === testval )
                {
                    //console.log( 'property=' + key + ' value=' + obj[key]);
                     globalretunval=obj[key];
                     break;
                }
            }
            return globalretunval;
        }

        var exist_tblno_in_obj=searchObj( outerObject, tblno1);
        alert(exist_tblno_in_obj);

现在我想检查这个物体中是否有50。如果它存在,我不希望相同的值被添加两次。以上只是动态创建对象的示例。那么我怎样才能追踪到同样的情况呢。

我找到了答案:

 if(outerObject["dynamicNameHere"]["value"])
 {
     if(parseInt(outerObject["dynamicNameHere"]["value"]) != 500)
     {
        outerObject["dynamicNameHere"]["value"] = 500;
     }
 }


 /*getting all the key and value in side object*/

 for(var key in outerObject)
 {
     for(var key1 in outerObject[key])
     {
         if(outerObject[key][key1] != 50)
         {
            outerObject[key][key1] = 500;
         }
     }

 }
        var globalretunval='';
        function searchObj( obj ,testval )
        {
            for( var key in obj ) 
            {
                if( typeof obj[key] === 'object' )
                {
                    searchObj( obj[key] , testval);
                }
                if( obj[key] === testval )
                {
                    //console.log( 'property=' + key + ' value=' + obj[key]);
                     globalretunval=obj[key];
                     break;
                }
            }
            return globalretunval;
        }

        var exist_tblno_in_obj=searchObj( outerObject, tblno1);
        alert(exist_tblno_in_obj);
谢谢您的回复。

这个怎么样:

        var globalretunval='';
        function searchObj( obj ,testval )
        {
            for( var key in obj ) 
            {
                if( typeof obj[key] === 'object' )
                {
                    searchObj( obj[key] , testval);
                }
                if( obj[key] === testval )
                {
                    //console.log( 'property=' + key + ' value=' + obj[key]);
                     globalretunval=obj[key];
                     break;
                }
            }
            return globalretunval;
        }

        var exist_tblno_in_obj=searchObj( outerObject, tblno1);
        alert(exist_tblno_in_obj);
var itExists = false;
for (var key in outerObject) {

    if (outerObject[key].value == 50) {
        itExists = true;
        break;
    }

}

您是否正在寻找一种解决方案,以确定任何outerObject[“…”]是否包含值50,或者某个特定对象是否具有值50?您需要更准确地说明您需要测试的内容。是的,您是对的。我正在寻找一个解决方案,以确定任何outerObject[“…”]是否包含值50。是否只检查值子项?如果是这样的话,这并不是一个真正的多维检查,因为在JS中,所有属性都可以像访问索引键一样进行访问。因此,它实际上只是数组中的一个简单属性检查。因此,您可以更改查询的标题;)你的问题越具体、越明确,答案就越快、越好。记住,一旦你得到了一个你喜欢的答案,就要将其标记为已接受,这表明你玩得很好:DAm正在寻找解决方案,以确定是否有任何外部对象[“…”]包含值50Hello john我编辑的代码请在我的代码中使用for循环来查找任何java脚本对象中的所有值。不要使用全局变量,请使用返回值!