1、实现 find 函数,满足 find(data).where(XXX).orderBy('','desc')
const find = function(origin){
let obj = new Object(origin);
Object.defineProperty(obj,'where',{
configurable:true,//是否可配置
enumerable:false,//是否可迭代
writable:false,//是否可写
value:function(where){
for(let key in where){
if(where.hasOwnProperty(key)){
obj = obj.filter((v)=>where[key].test(v[key]))
}
return find(obj)
}
}
});
Object.defineProperty(obj,'orderBy',{
configurable:true,//是否可配置
enumerable:false,//是否可迭代
writable:false,//是否可写
value:function(key,order){
obj.sort((a,b)=>{
if(order=='desc'){
return b[key]-a[key]
}else{
return a[key]-b[key]
}
})
return find(obj)
}
})
return obj;
}
2、实现数组的flat方法,支持传入递归深度
function myFlat (arr,departh){
// if(!arr || Array.isArray(arr)) throw('参数错误')
let res =[] // 存放扁平化数组
let deep = departh
arr.forEach(element => {
if(Array.isArray(element)&&departh>=0){
res = res.concat(arguments.callee(element,departh-1))
}else{
res.push(element)
}
});
return res
}
就两题,祝大家取得好成绩