当前位置:网站首页>【重构map】【重构filter】【重构Some】【重构reduce方法】【重构flat函数】
【重构map】【重构filter】【重构Some】【重构reduce方法】【重构flat函数】
2022-08-03 14:36:00 【勇敢*牛牛】
重构map
var arr = [1,3,4,5,5];
Array.prototype.myMap = function(callback,item){
var arr = [];
for(var i=0;i<this.length;i++){
var temp = callback(this[i],i,this);
arr.push(temp);
}
return arr;
}
arr = arr.myMap(function(item,index){
return item*2
})
console.log(arr);//[2, 6, 8, 10, 10]
</script>
重构filter
Array.prototype.myFilter = function(callback){
var arr = [];
for(var i=0;i<this.length;i++){
if(callback(this[i],i,this)){
arr.push(this[i]);
}
}
return arr
}
arr = arr.myFilter(function(item){
return item > 3
})
console.log(arr);//[4, 5, 5]
重构Some
Array.prototype.mySome = function(callback){
var arr = [];
for(var i=0;i<this.length;i++){
if(callback(this[i])){
return true;
}
}
return false
}
arr = arr.mySome(function(item){
return item > 7
})
重构reduce方法
Array.prototype.myReduce = function(callback,init){
var start = init ?? 1;
init = init ?? this[0];
for(var i=start;i<this.length;i++){
var init = callback(init,this[i])
}
return init;
}
var sulter = arr.myReduce(function(v,t){
return v+t;
})
重构flat函数
Array.prototype.myFlat = function(depth = 1){
if(depth == 0) return this;
console.log('this=',this);
return this.reduce((v,t)=>{
if(Array.isArray(t)){
return [...v,...t.myFlat(depth-1)]
}else{
return [...v,t]
}
},[])
}
arr= [1,2,3,3,[36,9,9,[0]]]
arr = arr.myFlat()
console.log(arr);//[1, 2, 3, 3, 36, 9, 9, Array(1)]
边栏推荐
- 币圈提款机:Solana钱包出现未知安全漏洞 大量用户数字资产被盗
- idea找不到class,gradle依赖已经加载,并且class可看
- [The Beauty of Software Engineering - Column Notes] 36 | What exactly do DevOps engineers do?
- PAT乙级-B1017 A除以B(20)
- 哥斯拉加密WebShell过杀软
- 不安装运行时运行.NET程序
- 数字孪生的4个最佳实践
- PCL 点云按时间进行分段
- Top 10 free proxy IP software_Domestic static IP proxy software
- servlet与jsp区别_servlet和class的区别
猜你喜欢
随机推荐
你没见过的《老友记》镜头,AI给补出来了|ECCV 2022
你把 浏览器滚动事件 玩明白
Role usage in Ansible
Petri net-2, directed net
PAT乙级-B1015 德才论(25)
MySQL【存储过程与函数】
0代码4步体验物联网设备上云
ffplay视频播放原理分析
位级运算之提取位级表示的最高位
Linux安装Mysql的几种方法
输出1!+2!+3!+......+n!
W11或W10系统如何进行休眠?
STL简介
面试官都震惊,你这“网络基础”可以啊
R7 6800H+RTX3050+120Hz 2.8K OLED屏,无畏Pro15 2022开启预售
币圈提款机:Solana钱包出现未知安全漏洞 大量用户数字资产被盗
PAT乙级-B1008 数组元素循环右移问题(20)
利用 NFT 释放网站的潜力
云硬盘EVS详解以及如何用与避坑【华为云至简致远】
varchar2和varchar2(char)_datetime数据类型