确定对象在javascript中是否具有属性和值

时间:2013-10-10 16:55:35

标签: javascript jquery web

我想检查某个对象是否具有某个属性,并且其值等于某个值。

var test = [{name : "joey", age: 15}, {name: "hell", age: 12}]

你去了,一个对象数组,现在我想在对象内部搜索,如果对象包含我想要的内容,则返回true。

我试着这样做:

Object.prototype.inObject = function(key, value) {
if (this.hasOwnProperty(key) && this[key] === value) {
  return true
};
return false;
};

这样可行,但不在数组中。我该怎么做?

5 个答案:

答案 0 :(得分:30)

使用some Array method测试数组中每个值的函数:

function hasValue(obj, key, value) {
    return obj.hasOwnProperty(key) && obj[key] === value;
}
var test = [{name : "joey", age: 15}, {name: "hell", age: 12}]
console.log(test.some(function(boy) { return hasValue(boy, "age", 12); }));
// => true - there is a twelve-year-old boy in the array

顺便说一下,don't extend Object.prototype

答案 1 :(得分:4)

- 属性 -

if(prop in Obj)  
//or
Obj.hasOwnProperty(prop)

- 为值---

使用“Object.prototype.hasValue = ...”对于js将是致命的,但 Object.defineProperty 允许您使用枚举来定义属性:false (默认)< / p>

Object.defineProperty(Object.prototype,"hasValue",{
   value : function (obj){
              var $=this;
              for( prop in $ ){
                  if( $[prop] === obj ) return prop;
              }
              return false;
           }
});

仅用于实验测试,如果NodeList具有元素

var NL=document.QuerySelectorAll("[atr_name]"),
    EL= document.getElementById("an_id");
console.log( NL.hasValue(EL) )  

// if false then #an_id has not atr_name

答案 2 :(得分:3)

对于数组,您当然必须使用for

浏览该数组
for(var i = 0 ; i < yourArray.length; i++){
    if(yourArray[i].hasOwnProperty("name") && yourArray[i].name === "yourValue") {
     //process if true
    }
} 

答案 3 :(得分:0)

通常,您会使用类似Object.first的内容:

// search for key "foo" with value "bar"
var found = !!Object.first(test, function (obj) {
    return obj.hasOwnProperty("foo") && obj.foo === "bar";
});

假设Object.first在找不到匹配项时会返回一些假值。

Object.first不是本机函数,但检查流行的框架,它们必然会有一个。

答案 4 :(得分:0)

这是检查对象是否具有属性但未设置属性值的另一种解决方案。也许属性值有0,null或空字符串。

array.forEach(function(e){
 if(e.hasOwnProperty(property) && Boolean(e[property])){
  //do something
 }
 else{
  //do something else
 }
});

这里是布尔()的技巧。