-1

我创建了一个 for in 循环,并试图理解为什么当我运行它时,控制台会记录 2x“我们知道了”。似乎如果我在循环中,如果它找到一次属性,你只希望它记录一次。

我也是一个 JS 新手,所以如果您对我的格式有任何反馈,我们将不胜感激。节日快乐!

var obj = {
  company: 'planters',
  peanuts: 'plain'
};

for (var key in obj) {
  if (obj.hasOwnProperty('peanuts')) {
    console.log('We got it');
  } else {
    console.log("We cant find it");
  }
};
4

3 回答 3

2

发生这种情况的原因是您正在循环它进行 2 次迭代(这是对象的长度)并查看 object 是否具有 property peanuts,这在两种情况下都是正确的。

于 2013-12-19T04:35:53.363 回答
1

for 循环是不必要的。你没有使用key. 它仅相当于运行 for 循环的主体对象(和父对象)中存在的键的次数。

尝试

for (var key in obj) {
  if (obj.hasOwnProperty(key)) {  // you mean this
    console.log('We got ', key);
  } else {
    console.log("We cant find it");
  }
};

看看这里发生了什么更好。

于 2013-12-19T04:09:29.297 回答
0

如果您正在寻找特定密钥,则必须将其与key.

var found = false;
for (var key in obj) {
    if (obj.hasOwnProperty(key) && key == 'peanuts') {
        console.log('We got it');
        found = true;
        break;
    }
}
if (!found) {
    console.log("We can't find it");
}
于 2013-12-19T04:12:07.723 回答