Web 前端开发 让前端飞

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

2017-11-30  本文已影响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.

上一篇 下一篇

猜你喜欢

热点阅读