原理
1、参数:筛选的数据、回调函数、{isObj : 返回的数据类型,target : 回调函数的作用域}
2、判断返回的数据类型
3、对数据进行遍历判断
实现
/**
* 筛选数据
* @param {[type]} data 数据
* @param {Function} func 条件方法(传入value参数,若返回'_break'则只返回筛选到的第一个数据)
* @param {Object} _p {
* isObj: 是否按原Object数据结构返回,
* target: func作用域
* }
* @return {Array} 结果数组
*/
var filter = function(data,func,_p){
var result;
var p = _p||{};
if(p.isObj){
result = new Object();
}else{
result = new Array();
}
each(data,function(value,key){
var cdb = func.call(p.target||this,value,key);
if(cdb){
if(p.isObj){
result[key] = value;
}else{
result.push(value);
}
if(cdb == '_break'){
result = value;
return false;
}
}
});
return result;
}