首页 > 其他分享 >关于数组的map、filter、every、some、find、findIndex、 includesd几个方法实现原理

关于数组的map、filter、every、some、find、findIndex、 includesd几个方法实现原理

时间:2023-02-23 17:02:12浏览次数:32  
标签:function map findIndex false some start let prototype true

map方法 原理

//map 遍历格式所有项并返回一个新数组
Array.prototype.myMap = function(callback){
    let arr = [];
    for(let i = 0;i<this.length;i++){
       arr.push(callback(this[i],i,this)) 
    }
   return arr 
}
let arVal = [2,3,4];
console.log(arVal.myMap((item,index)=> item+1)); //[3, 4, 5]

filter方法 原理

//map 遍历格式所有项并返回一个新数组
Array.prototype.myFilter = function(callback){
    let arr = [];
    for(let i = 0;i<this.length;i++){
       callback(this[i],i,this) && arr.push(this[i]) 
    }
   return arr 
}
let arVal = [2,3,4,5];
console.log(arVal.myFilter((item,index)=> item>3)); //[4, 5]

every方法 原理

//every 遍历有项 有一个为false 则返回false 所有都为true 则为true
Array.prototype.myEvery = function(callback){
    for(let i = 0;i<this.length;i++){
       if(!callback(this[i],i,this)) return false 
    }
   return true
}
let arVal = [2,3,4,5];
console.log(arVal.myEvery((item,index)=> item>3)); //false

some方法 原理

//some 遍历所有项 一项为true 就返回true 所有为false 则为false
Array.prototype.mySome = function(callback){
    for(let i = 0;i<this.length;i++){
       if(callback(this[i],i,this)) return true  
    }
   return false
}
let arVal = [2,3,4,5];
console.log(arVal.mySome((item,index)=> item>3)); //true

find() 方法 原理

//find 遍历格式所有项并返回符合条件项 找不到返回undefined
Array.prototype.myFind = function(callback){
    for(let i = 0;i<this.length;i++){
       if(callback(this[i],i,this)) return this[i]
    }
   return undefined
}
let arVal = [2,3,4,5];
console.log(arVal.myFind((item,index)=> item === 3)); //3

findIndex() 方法原理

//findIndex 遍历所有项并返回符合判断条件项的索引 找不到返回-1
Array.prototype.myFindIndex = function(callback){
    for(let i = 0;i<this.length;i++){
       if(callback(this[i],i,this)) return i 
    }
   return -1
}
let arVal = [2,3,4,5];
console.log(arVal.myFindIndex((item,index)=> item === 6)); //-1

includes() 方法 原理

//includes() 方法判断一个数组是否包含一个指定的值。
Array.prototype.myIncludes = function(argValue,start){
start = start < 0?this.length + start:start;
while( ++start < this.length){
    if(this[start] === argValue || (this[start] !== this[start] && argValue !== argValue) ){
        return true
    }
}
   return false
}
let arVal = [2,3,4,5];
console.log(arVal.myIncludes(3,0)); //true
let a = [NaN,undefined,null,NaN,1,2];
console.log(a.myIncludes(NaN,0));//true
console.log(a.myIncludes(9,0));//false
console.log(a.myIncludes(null,0));// true
console.log(a.myIncludes(undefined,0));// true

标签:function,map,findIndex,false,some,start,let,prototype,true
From: https://www.cnblogs.com/zhu-xl/p/17148682.html

相关文章

  • 在 Axure 9.0 上使用 Font Awesome的免费图标
    一、在本地安装FontAwesome字体文件https://fontawesome.com/download  当前最新免费版本6.3.0二、解压得到的压缩包,安装otfs文件夹下的三个otf字体文件:......
  • 【HashMap】HashMap多线程下的死循环问题及JDK8版本的修复
    背景想要记录一下关于jdk下的hashmap存在的一些问题:1、许多同学都知道JDK下的HashMap是线程不安全的,但究竟是怎样个不安全法,在多线程下会出现怎样的问题?其中原因是......
  • mapbox导出图片并下载
    //下载地图图片downLoad(){letbase64=this.getMyMap().getCanvas().toDataURL('image/png')letdate=newDate();letaLink=doc......
  • TypeScript & Map & Set All In One
    TypeScript&Map&SetAllInOneMap&SetvarMap:MapConstructornew<number,number>(iterable?:Iterable<readonly[number,number]>|null|undefined)=>......
  • re | mmap测试 | 深入理解计算机系统
    mmap测试|深入理解计算机系统在复习这本书,顺便写几个测试代码。用mmap读个文件,在这种情况下使用MAP_SHARED和MAP_PRIVATE都是可以的,但是如果要修改文件内容并写会,则需......
  • 【Java对象转换】002- Java 对象与 Map 互转
    文章目录​​【Java对象转换】002-Java对象与Map互转​​​​一、Java对象与Map概述​​​​1、Java对象​​​​2、Map​​​​二、Java对象与Map互转​​​​1......
  • Android中drawable和mipmap到底有什么区别
    欢迎通过我的个人博客来查看此文章老项目代码中发现有的图片放到了drawable中,有的图片放到了mipmap中,开发时秉承哪个目录下文件多放哪里的原则,偶尔有疑惑搜一搜文......
  • 教你编写SQLMap的Tamper脚本过狗
    测试环境最新版某狗测试方法安全狗其实是比较好绕的WAF,绕过方法很多,但这里我们就用一种:注释混淆一招鲜吃遍天下注释混淆,其实就是在敏感位置添加垃圾字符注释,常用的......
  • 使用Jmockit 测试 spring + mybatis plus 项目 - CRUD Mapper 查询样例
    Jmockit1.46+junit4packagexxx;XXXProgressimportxxx;importcom.baomidou.mybatisplus.core.conditions.Wrapper;importcom.google.common.collect.Lists;impo......
  • ansible中map
    一、简介ansible中的filter:map,其实是jinja2中的filterpython中map(func,iter)返回func与每个元素计算后的迭代器,iter是个可迭代对象ansible中的map和python中的基......