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

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中(下面数组的迭代方法也是如此)

Array.proptotype.selfMap=selfMap
[1,2,3].selfMap(number=> number * 2)

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

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaScript中,可以通过使用原生的Array.map()函数来操作数组中的每个元素,并返回新的数组。但是,当数组中包含大量的数据时,使用普通的Array.map()函数可能会导致性能问题。 因此,我们可以使用以下优化技巧来提高Array.map()函数的性能: 1. 使用for循环代替Array.map()函数。for循环在处理大量数据时可以比Array.map()函数更快。 2. 将数组划分为多个较小的块,并分别对每个块进行处理。这可以减少内存使用并提高处理速度。 3. 避免对每个数组元素进行不必要的计算。例如,可以通过添加if语句来跳过一些不需要计算的元素。 以下是一个使用这些优化技巧的数组map方法的示例代码: ```javascript function optimizedMap(arr, callback) { var len = arr.length, chunkSize = 1000, // 将数组划分为每个1000个元素 chunks = len / chunkSize, result = [], i, j, chunkResult; for (i = 0; i < chunks; i++) { chunkResult = []; // 遍历当前块中的每个元素(最后一块可以不满1000个元素) for (j = i * chunkSize; j < Math.min(len, (i + 1) * chunkSize); j++) { if (arr[j] != null) { // 避免对空元素进行计算 chunkResult.push(callback(arr[j])); // 对当前元素进行计算并存储到chunkResult数组中 } } result.push.apply(result, chunkResult); // 将chunkResult数组中的元素合并到result数组中 } return result; } ``` 该函数将数组划分为多个较小的块,并对每个块分别进行操作,从而提高了处理大量数据的性能。同时,它还避免了对空元素进行计算,进一步优化了性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值