当前位置:网站首页>牛客刷题:手动实现数组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
边栏推荐
猜你喜欢
随机推荐
解道7-编程技术4
Sentinel vs Hystrix 限流对比,到底怎么选?
嗨!不来看一下如何骚气十足的登陆MySQL嘛?
若依集成minio实现分布式文件存储
网络运维系列:健康检查的方式
七夕到了——属于程序员的浪漫
IP Protocol (Internet Protocol)
Mysql用户管理
什么是幂等
Win10怎么开启自带的游戏录屏功能?
golang 刷leetcode:Morris 遍历
[c] Detailed explanation of operators (1)
成功解决TypeError: can‘t multiply sequence by non-int of type ‘float‘
SSM integration steps (emphasis)
Redis是如何轻松实现系统秒杀的?
Command line startup FAQs and solutions
矩阵白化原理及推导
用户之声 | GBASE南大通用实训有感
matplotlib绘图的核心原理讲解(超详细)
hi!Don't look at how to SAO gas dye-in-the-wood in MySQL?









