当前位置:网站首页>【重构map】【重构filter】【重构Some】【重构reduce方法】【重构flat函数】
【重构map】【重构filter】【重构Some】【重构reduce方法】【重构flat函数】
2022-08-08 11:53: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方法
arr = [1, 2, 3]
Array.prototype.myReduce = function (callback, init) {
var start = init === undefined ?1:0;
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;
},2)
console.log(sulter);
重构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)]
边栏推荐
- 如何在go重打印函数调用者信息Caller
- Acwing3452. 进制转换
- 一些常见的web小功能
- Oracle ASM disk group replaces old storage scheme with new storage
- Optional常用方法解析
- day01 - Introduction to Web API - Introduction to DOM - Getting Elements - Event Basics - Manipulating Elements - Exclusive Operations - Custom Attribute Operations - Node Operations - Cases: Dynamica
- JPA之使用复合主键
- Software testing testing on behalf of the user
- 模式识别 学习笔记:第七章 特征选择
- Mobile adaptation method of vw/vh - vw/vh instance - analog B stand mobile home page - get style tutorial video
猜你喜欢
随机推荐
宝塔实测-TinkPHP5.1框架小程序商城源码
四、哈希表
【访谈】Eotalk Vol.01:Eoapi,我们希望以开源的方式构建 API 生态系统
C语言详解系列——指针与结构体
Optional常用方法解析
(原创)[C#] GDI+ 之鼠标交互:原理、示例、一步步深入、性能优化
自学脚手架——《热学》 by 李椿(第一,二,三,四,五章)
结合“xPlus”探讨软件架构的创新与变革
openssl 创建证书
oracle存储过程中表名变量的异常
leetcode-636:函数的独占时间
研究:有毒的PFAS化学品使全球各地的雨水无法安全饮用
安科瑞预付费水电集团物业解决方案-Susie 周
看到这个应用上下线方式,不禁感叹:优雅,太优雅了!
移动适配vw/vh方法—vw/vh实例—模拟B站手机端首页—获取样式教程视频
#yyds Dry Goods Inventory#【Yugong Series】August 2022 Go Teaching Course 005-Variable
写个 shell 玩 数字炸弹
STM32的内存管理相关(内存架构,内存管理,map文件分析)
gaussdb数据库连接报错:psycopg2.OperationalError: server closed the connection unexpectedly
LeetCode_1004_最大连续1的个数Ⅲ