javascript检查值是否与对象匹配

时间:2010-12-22 14:35:15

标签: javascript object

我有一个javascript对象

var obj = {
    "0" : "apple",
    "1" : "pear",
    "2" : "orange"
}

我想检查'orange'是否在obj。

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

感谢。

4 个答案:

答案 0 :(得分:14)

你必须迭代:

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

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

答案 1 :(得分:1)

没有内置功能可以执行此操作,您必须检查每个属性。

同样通过对象的外观,它应该是一个数组而不是一个对象。如果是这种情况,那么迭代这些值会稍微容易一些,并且稍微有点效率。

var arr = ['apple','pear','orange'];
function inArray(inVal){
    for( var i=0, len=arr.length; i < len; i++){
        if (arr[i] == inVal) return true;
    }
    return false;
}

答案 2 :(得分:1)

function has(obj, value) {
  for(var id in obj) {
    if(obj[id] == value) {
      return true;
    }
  }
  return false;
}

if(has(obj, "orange")) { /* ... */ }

答案 3 :(得分:0)

你可能想看看jQuery.inArray。认为它适用于物体。