JS:若对象数组中的某个对象含有某个属性-值对,则输出这个对象

来源:互联网 发布:网络主播是怎么赚钱的 编辑:程序博客网 时间:2024/06/08 00:22

比如:

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;  });  }


0 0
原创粉丝点击