美文网首页Web 前端开发 让前端飞
【Javascript】若对象数组中的某个对象含有某个属性-值对

【Javascript】若对象数组中的某个对象含有某个属性-值对

作者: 雨水之后 | 来源:发表于2017-11-30 14:17 被阅读0次

例如:where([{ "a": 1, "b": 2 }, { "a": 1 }, { "a": 1, "b": 2, "c": 2 }], { "a": 1, "b": 2 });最终会返回[ { a: 1, b: 2 }, { a: 1, b: 2, c: 2 } ],因为以上两个属性中都含有“{ "a": 1, "b": 2 }”这两个属性值对。

function where(collection, source) {  
  //collection代表被测试的对象数组,source为被测试的属性值对(or对象)。  
  //使用Object.keys()方法获取这个对象的所有属性,并返回为一个数组。  
  var sourceKeys = Object.keys(source);  
    
  //使用filter()方法过滤出符合条件的数组对象。  
  return collection.filter(function(obj){  
    //遍历source的所有属性  
    for(var i=0;i<sourceKeys.length;i++){  
      //如果obj中不存在那些属性,或属性不匹配,则返回false,即为不符合条件。  
      if(!obj.hasOwnProperty(sourceKeys[i]) || obj[sourceKeys[i]]!==source[sourceKeys[i]]){  
        return false;  
      }  
    }  
    return true;  
  });  
    
}  

THE END.

相关文章

网友评论

    本文标题:【Javascript】若对象数组中的某个对象含有某个属性-值对

    本文链接:https://www.haomeiwen.com/subject/zoevbxtx.html