对象搜索仅在第一次有效

问题描述 投票:0回答:1

我创建了一个名为“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

我似乎找不到这里缺少的东西。感谢任何帮助,谢谢。

javascript object
1个回答
-1
投票

这是因为当你用 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;
}

© www.soinside.com 2019 - 2024. All rights reserved.