如何使用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脚本对象中的所有值。不要使用全局变量,请使用返回值!