当前位置:网站首页>牛客刷题:手动实现数组filter方法
牛客刷题:手动实现数组filter方法
2022-08-02 21:27:00 【废物的自我修养记录】
题目:
描述
请补全JavaScript代码,要求实现Array.filter函数的功能且该新函数命名为"_filter"。
示例1
输入:[1,2]._filter(i => i>1)
输出:[2]
根据给出的示例可以看出是数组直接调用的_filter方法,所以可以判断出这样是挂载在Array的原型链上的,和原生filter同理
实现
1. _filter接受一个函数作为参数,所以我们先给要实现在函数写一个形参callback来接收这个参数
Array.prototype._filter=function(callback){
}
2. 调用完_filter方法后会直接返回一个数组,所以我们也要先定义一个空数组用来接收callback判断后的值,然后再return出去
Array.prototype._filter=function(callback){
let result=[];
return result;
}
3. 重点: 先观查callback函数(示例中即 i => i>1) ,这个callback的返回值是一个布尔值,总会是true或false,所以我们要根据这个布尔值当他为true的时候就把值加入到result新数组中
Array.prototype._filter=function(callback){
let result=[];
// 为什么能直接用this,谁调用的this就指向谁,可以去复习下this指向
for(let i=0;i<this.length;i++){
if(callback(this[i],i)){
result.push(this[i])
}
}
return result;
}
4. _fitler方法实现完成
console.log([1,2,3]._filter(x=>x>2)) // 3
边栏推荐
猜你喜欢
随机推荐
典型相关分析CCA计算过程
【STM32学习2】存储器相关概念与操作
抽象工厂模式
【DEBUG】ImportError: Unable to import required dependencies: numpy: DLL load failed: 找不到指定的模块。
四、字符常量 & 字符串
行业 SaaS 微服务稳定性保障实战
面试官:可以谈谈乐观锁和悲观锁吗
RuoYi-App启动教程
测试ESP32-Zigbee转发命令 : 滑轨、继电器控制
[C题目]力扣142. 环形链表 II
Zabbix 5.0 Monitoring Tutorial (2)
golang刷leetcode: 卖木头块
golang刷leetcode:统计区间中的整数数目
[C题目]力扣1. 两数之和
如何抓住NFT、元|宇|宙新趋势?
字节内部技术图谱 惊艳级实用
golang刷leetcode:按位与结果大于零的最长组合
解道6-编程技术3
golang刷leetcode:到达角落需要移除障碍物的最小数目
win10安全中心设置不扫描某个文件夹的方法