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 用于判断当前下标的元素是否存在于数组中,欢迎大家在评论区交流。

相关推荐
0x53几秒前
JAVA|智能仿真并发项目-进程与线程
java·开发语言·jvm
黎雁·泠崖2 分钟前
Java静态方法:用法+工具类设计+ArrayUtil实战
java·开发语言
CC.GG5 分钟前
【C++】C++11(二)可变模板参数模板、新的类功能、包装器(function、bind)
开发语言·c++
Yupureki14 分钟前
《算法竞赛从入门到国奖》算法基础:入门篇-分治
c语言·开发语言·数据结构·c++·算法·贪心算法
无心水17 分钟前
4、Go语言程序实体详解:变量声明与常量应用【初学者指南】
java·服务器·开发语言·人工智能·python·golang·go
ZPC821017 分钟前
psutil
开发语言·php
jiunian_cn18 分钟前
【C++】线程库
开发语言·c++
0x5319 分钟前
JAVA|智能仿真并发项目-并行与并发
java·开发语言
漫漫求22 分钟前
1、IM:基础连接
开发语言·后端·golang