当前位置:网站首页>牛客刷题:手动实现数组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
边栏推荐
猜你喜欢
随机推荐
Swin Transformer 论文精读,并解析其模型结构
PyRosetta 安装方法之Conda安装
命令行启动常见问题及解决方案
【干货】分库分表最佳实践
C primer plus学习笔记 —— 9、联合&枚举&typdef
工厂模式理解了没有?
以赛促练-力扣第304场周赛反思(持续更新中)
The interviewer asked me: delete library, in addition to run do?
YARN资源调度系统介绍
JS函数防抖&函数节流及其使用场景
win10安全中心设置不扫描某个文件夹的方法
用户之声 | GBASE南大通用实训有感
word操作:单独调整英文字体
双轴晶体中锥形折射的建模与应用
从零开始配置 vim(5)——本地设置与全局设置
CS5213芯片|HDMI to VGA转换头芯片资料分享
golang刷leetcode:到达角落需要移除障碍物的最小数目
Abstract Factory Pattern
golang 刷leetcode:统计打字方案数
正则表达式