我创建了一个名为“Jarz”的对象。然后在其中添加一个名为“猫”的对象。然后我创建了一个函数来在 Jarz 对象中搜索名为“cat”的对象,该函数有效。然而,对于我添加到“Jarz”的“cat”之后的每个对象,该函数将在搜索中找不到它。只有第一次运行才有效。这是代码:
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;
}
}
}
当我在第一个对象“cat”上运行它时,它返回 true。但之后我创建的任何 obj 都会返回 false。即:
Jarz['hat'] = {};
doesObjExist('hat') // returns false
我似乎找不到这里缺少的东西。感谢任何帮助,谢谢。
这是因为当你用 hat 调用它时,它首先检查 cat ,因为你从循环返回的值是 false,所以它不会进一步执行来检查 hat 。
将其更改为:
var Jarz = {};
Jarz['cat'] = {};
console.log(doesObjExist('cat'));
Jarz['hat'] = {};
console.log(doesObjExist('hat'));
function doesObjExist(ObjName) {
var tmpArr = Object.keys(Jarz);
var count = 0;
for (var i = 0; i < tmpArr.length; i++) {
if (tmpArr[i] === ObjName) {
return true;
} else {
count++;
}
}
if (count >= tmpArr.length)
return false;
}