/* filter()对数组中的每个元素都执行一次指定的函数(callback),并且创建一个新的数组,该数组元素是所有回调函数执行时返回值为 true 的原数组元素。它只对数组中的非空元素执行指定的函数,没有赋值或者已经删除的元素将被忽略,同时,新创建的数组也不会包含这些元素。回调函数可以有三个参数:当前元素,当前元素的索引和当前的数组对象。*/// 原始数据var arrs = [ { name: "tom", age: 18, sex: "boy" }, { name: "jim", age: 19, sex: "boy" }, { name: "anchor", age: 20, sex: "boy" }, { name: "lucy", age: 18, sex: "girl" }, { name: "lily", age: 19, sex: "girl" }, { name: "andy", age: 20, sex: "girl" }];// 过滤条件var limits = { name: 'tom', age: 18, sex: 'boy'};// filter回调函数function dofilter(element, index, array) { if(limits.name && limits.name != element.name){ // 姓名过滤 return false; }else if(limits.age && limits.age != element.age){ // 年龄过滤 return false; }else if(limits.sex && limits.sex != element.sex){ // 性别过滤 return false; } return true;}/* test */var filtered = arrs.filter(dofilter);console.log(filtered);