Javascript 对象搜索只适用于第一次
我创建了一个名为“Jarz”的对象。然后在其中添加了一个名为“cat”的对象。然后我做了一个函数,在Jarz对象中搜索一个名为“cat”的对象,它可以工作。但是,对于我添加到“Jarz”中的“cat”之后的每个对象,函数都不会在搜索中找到它。只有第一次运行才有效。代码如下:Javascript 对象搜索只适用于第一次,javascript,object,Javascript,Object,我创建了一个名为“Jarz”的对象。然后在其中添加了一个名为“cat”的对象。然后我做了一个函数,在Jarz对象中搜索一个名为“cat”的对象,它可以工作。但是,对于我添加到“Jarz”中的“cat”之后的每个对象,函数都不会在搜索中找到它。只有第一次运行才有效。代码如下: var Jarz = {}; Jarz['cat'] = {}; 以下是函数: function doesObjExist(ObjName){ var tmpArr = Object.keys(Jarz); for(
var Jarz = {};
Jarz['cat'] = {};
以下是函数:
function doesObjExist(ObjName){
var tmpArr = Object.keys(Jarz);
for(var i = 0; i < tmpArr.length; i++){
if(tmpArr[i] === ObjName){
return true;
}
else {
return false;
}
}
}
我似乎找不到这里缺少的东西。感谢您的帮助。这是因为当您使用hat调用它时,它首先检查cat,因为它是假的,您从循环返回,因此它不会进一步执行检查hat 将此更改为
var-Jarz={};
Jarz['cat']={};
console.log(doesObjExist('cat');
Jarz['hat']={};
log(doesObjExist('hat'));
函数doesObjExist(对象名){
var tmpArr=Object.keys(Jarz);
var计数=0;
对于(变量i=0;i=tmpArr.length)
返回false;
}
Movereturn false
to在for
循环之后。是的,就是这样。它正在检查第一个,因为它不匹配(因为它现在是hat,而不是cat),所以返回false。请注意,Jarz.hasOwnProperty('hat')
似乎也能做你想做的事情。使用调试器浏览你的代码。把代码的所有其他问题放在一边,如果(b)返回true,则避免使用的反模式;否则返回false
。只需返回b代码>。在这种情况下,返回tmpArr[i]===ObjName代码>(尽管在本例中,这不会满足您的需要)。
Jarz['hat'] = {};
doesObjExist('hat') // returns false