javascript的高级用法(循环实现数组map方法)

javascript 复制代码
const selfMap =function(fn, context){
let arr = Array.prototype.slice.call(this)
let mappedArr = Array()
for(let i=0; i< arr.length; i++){
//skip empty item
if(!arr.hasOwnProperty(i));continue
mappedArr[i]= fn.call(contenxt, arr[i], i, this)
return mappedArr
}

使用方法:将selfMap注入到Array.prototype中(下面数组的迭代方法也是如此)

javascript 复制代码
Array.proptotype.selfMap=selfMap
[1,2,3].selfMap(number=> number * 2)

值得一提的是,map的第二个参数就是第一个参数回调中的这个点。如果第一个参数是箭头函数,则设置第二个 this 将无效,因为箭头函数的词法绑定。

另一个是稀疏数组的处理,HasOwnProperty 用于判断当前下标的元素是否存在于数组中,欢迎大家在评论区交流。

相关推荐
南境十里·墨染春水1 天前
线程池学习(三) 实现固定线程池
开发语言·c++·学习
橘子海全栈攻城狮1 天前
【最新源码】基于springboot的快递物流平台的设计与实现C102
java·开发语言·spring boot·后端·spring·web安全
之歆1 天前
DAY_24JavaScript 面向对象深度全解:Object、构造函数与 this 系统指南(上)
开发语言·前端·javascript·原型模式
Asurplus1 天前
【VUE】17、使用JSEncrypt对数据加解密
javascript·vue.js·jsencrypt·rsa
sakiko_1 天前
Swift报错合集(Xcode编译器)
开发语言·swiftui·xcode·swift·uikit
海盗12341 天前
C#中使用MiniExcel 快速入门:读写 .xlsx 文件
开发语言·windows·c#
XMYX-01 天前
29 - Go time 时间模块详解:时间处理、定时控制与底层设计
开发语言·golang
小小de风呀1 天前
de风——【从零开始学C++】(七):string类详解
开发语言·c++·算法
丘比特惩罚陆1 天前
制作类似aimlab的测试手速反应力的小游戏
开发语言·javascript·visual studio
江屿风1 天前
【c++笔记】类和对象流食般投喂(中)
开发语言·c++·笔记