Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript检查值是否与对象匹配_Javascript_Object - Fatal编程技术网

javascript检查值是否与对象匹配

javascript检查值是否与对象匹配,javascript,object,Javascript,Object,我有一个javascript对象 var obj = { "0" : "apple", "1" : "pear", "2" : "orange" } 我想检查obj中是否有“橙色” 是否有一个内置函数可以实现这一点?或者我应该迭代obj的每个值吗 谢谢。您必须迭代: for (var k in obj) { if (!obj.hasOwnProperty(k)) continue; if (obj[k] === "orange") { /* yaay!

我有一个javascript对象

var obj = {
    "0" : "apple",
    "1" : "pear",
    "2" : "orange"
}
我想检查obj中是否有“橙色”

是否有一个内置函数可以实现这一点?或者我应该迭代obj的每个值吗


谢谢。

您必须迭代:

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

现在,这里的“hasOwnProperty”测试是为了确保您不会在从原型继承的属性上绊倒。在某些情况下,这可能是不可取的,事实上,这是你需要了解的事情之一,这样才能确定你是否想做那个测试。从对象原型中拾取的属性有时可能是由各种库丢弃的内容。(我认为ES5标准提供了控制这些属性是否“可编辑”的方法,但在现实世界中仍然有IE7。)

没有内置函数来实现这一点,您必须检查每个属性

此外,根据对象的外观,它应该是一个数组而不是一个对象。如果是这样的话,遍历这些值会稍微容易一些,效率也会稍微高一些

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;
}
var-arr=['apple'、'pear'、'orange'];
INARAY功能(无效){
对于(变量i=0,len=arr.length;i
您可能想看看。我认为它也适用于对象。

感谢您的建议,不幸的是我尝试了它,但它没有。+1,但需要注意的是,这不会进行原型检查。如果您可能正在检查具有原型的对象,请将
obj[id]==value
更改为
obj.hasOwnProperty(id)&&obj[id]==value
。也可以考虑使用<代码>== /<代码>严格的等式,而不是“代码> >=/CODE >松散的相等。如果性能是一个问题,请保持一个并行对象流,它看起来像“代码”{“Apple”):true,“Paple”:true,“橙色”:true } <代码>。然后你可以在parallelObj中快速执行
“apple”来进行存在性检查。尽管如此,所有的酷孩子都在使用
Object.prototype.hasOwnProperty.call(obj,k)
。是的,很好的一点@sdleihsirhc-如果担心对象可能被“污染”,这绝对是个好主意:-)
function has(obj, value) {
  for(var id in obj) {
    if(obj[id] == value) {
      return true;
    }
  }
  return false;
}

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