javascript检查值是否与对象匹配

Mar*_*ark 10 javascript object

我有一个javascript对象

var obj = {
    "0" : "apple",
    "1" : "pear",
    "2" : "orange"
}
Run Code Online (Sandbox Code Playgroud)

我想检查'orange'是否在obj中.

是否有内置功能可以做到这一点?或者我应该迭代obj的每个值?

谢谢.

Poi*_*nty 14

你必须迭代:

for (var k in obj) {
  if (!obj.hasOwnProperty(k)) continue;
  if (obj[k] === "orange") {
    /* yaay! an orange! */
  }
}
Run Code Online (Sandbox Code Playgroud)

现在,"hasOwnProperty"测试是为了确保你不会绊倒从原型继承的属性.在某些情况下,这可能并不理想,而且它确实是您需要了解的事情之一,以确定您是否确实要进行该测试.从对象的原型中提取的属性有时可能是各种库放在那里的东西.(我认为ES5标准提供了控制这些属性是否"可迭代"的方法,但在现实世界中仍有IE7.)