当前位置:网站首页>牛客刷题:手动实现数组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
边栏推荐
- 微软SQL服务器被黑客入侵以窃取代理服务的带宽
- Intensive reading of the Swin Transformer paper and analysis of its model structure
- golang刷leetcode:最大波动的子字符串
- golang刷leetcode:按位与结果大于零的最长组合
- 矩阵白化原理及推导
- 【STM32学习3】DMA基础操作
- golang刷leetcode:统计区间中的整数数目
- js function anti-shake and function throttling and other usage scenarios
- Summary of @Transactional transaction invocation and effective scenarios
- 主成分分析(PCA)
猜你喜欢
随机推荐
博客主题美化第二弹
2018HBCPC个人题解
SRv6网络演进面临的挑战
Ansible安装与配置
Intensive reading of the Swin Transformer paper and analysis of its model structure
树形结构构造示例代码
从零开始配置 vim(5)——本地设置与全局设置
Redis是如何轻松实现系统秒杀的?
回文自动机+CodeTON Round 2 C,D
JumpServer open source bastion machine completes Loongson architecture compatibility certification
golang刷leetcode:按位与结果大于零的最长组合
30天啃透这份Framework 源码手册直接面进大厂
【干货】分库分表最佳实践
SSM整合步骤(重点)
golang刷leetcode: 在每个树行中找最大值
[C题目]力扣234. 回文链表
ORB SLAM3加载Vocabulary更快ORBvoc.bin
终于明白:有了线程,为什么还要有协程?
LeetCode 2360. 图中的最长环 基环树找环+时间戳
解道7-编程技术4







