Array的原型对象上方法实现

1、Array.prototype.includes(findVal, fromIndex):查找某元素是否包含在数组中

入参:

findVal----要查找的元素,必填

fromIndex-----指定开始查找的索引位置,非必填,默认为0

返回结果:

boolean:true---元素包含在数组中,false-不包含

示例:[2,3,45].includes(2)----true        [2,3,45].includes(1)----false      [2,3,45].includes(3, 1)----true


  
    
  

2、Array.indexOf(findVal, fromIndex):从前往后查,返回元素在数组中第一次出现的位置

入参:

findVal---要查找的元素,必需

fromIndex---从指定的索引处开始查找,非必需,默认0

注意:fromIndex=Infinity,直接从第一位元素查起;fromIndex=负数,fromIndex + len = a,a<=0,则从第一位元素插起来;如果a>0&& a=len,返回-1

返回值:

元素包含在数组中,返回元素在数组中第一次出现的位置,否则返回-1


  
    
  

3、Array.prototype.lastIndexOf(findVal, fromIndex)-----从后往前查,找到元素第一次出现的位置

findVal---要查找的元素,必需

fromIndex---从指定的索引处开始查找,非必需,默认0

注意:

返回值:

元素包含在数组中,返回元素在数组中第一次出现的位置,否则返回-1


  
    
  

4、Array.prototype.find(fn,thisArg)----返回满足回调函数条件的第一个元素,否则返回undefined

入参:

fn----提供条件的函数,必需

thisArg----指定fn的作用域,非必需

返回值:返回满足条件的第一个元素,否则返回undefined


  
    
  

5、Array.prototype.findIndex(fn,thisArg)----返回满足回调函数条件的第一个元素的索引,否则返回-1

入参:

fn----提供条件的函数,必需

thisArg----指定fn的作用域,非必需

返回值:返回满足条件的第一个元素的索引,否则返回-1


  
    
  

6、Array.prototype.map(fn(val, index, arr){}, thisArg)----返回新数组,数组里面的元素是调用fn后返回的值

入参:

fn----处理函数

thisArg----指定fn的作用域,非必需

返回值:返回新的数组,数组里面返回的元素是调用fn后的返回值


  
    
  

7、Array.prototype.filter(fn(val, index, arr){}, thisArg)----返回新数组,数组里面的元素是满足fn里面设置的条件的arr里面的值

入参:

fn----提供条件的函数

thisArg----指定fn的作用域,非必需

返回值:返回新数组,数组里面的元素是满足fn里面设置的条件的arr的值


  
    
  

8、Array.prototype.filter(fn(val, index, arr){}, thisArg)----返回新数组,数组里面的元素是满足fn里面设置的条件的arr里面的值

入参:

fn----提供条件的函数

thisArg----指定fn的作用域,非必需

返回值:返回新数组,数组里面的元素是满足fn里面设置的条件的arr的值


  
    
  

9、Array.prototype.forEach(fn(val, index, arr){}, thisArg)----对数组的每一个元素都调用fn方法,返回undefined

入参:

fn----对每一个元素调用的函数,必需

thisArg----指定fn的作用域,非必需

返回值:返回undefined


  
    
  

10、Array.prototype.every(fn(val, index, arr){}, thisArg)----对数组的元素调用fn方法,如果每次调用都返回true,则返回true;否则有一个返回false,就直接返回false

入参:

fn----对每一个元素调用的函数,必需

thisArg----指定fn的作用域,非必需

返回值:根据fn函数,测试数组每一个元素是否满足条件,如果都满足则返回true;否则有一个返回false,就直接返回false

注意:如果arr是一个[],则直接返回true


  
    
  

11、Array.prototype.some(fn(val, index, arr){}, thisArg)----对数组的元素调用fn方法,如果遇到满足条件的元素时,则返回true;如果元素都不满足条件,就返回false

入参:

fn----数组元素调用的函数,必需

thisArg----指定fn的作用域,非必需

返回值:对数组的元素调用fn方法,如果遇到满足条件的元素时,则返回true;如果元素都不满足条件,就返回false

注意:如果arr是一个[],则直接返回false


  
    
  

12、Array.prototype.reduce(fn(accumulator,item, index, arr){},initVal)----对数组的元素从左到右调用fn,并将结果汇总为一个返回值

入参:

fn----数组元素调用的函数,必需;accumulator汇总值的变量

initVal----给accumulator的初始化的值,非必需

返回值:对数组的元素从左到右调用fn,将结果汇总返回

注意:

如果arr是一个[],并且没有提供initVal,则抛错

如果arr是[],有提供initVal,则返回initVal的值

如果arr不是[],并且没有提供initVal,则arr的第一个元素的值作为accumulator的初始值,并从arr的第二个元素开始处理


  
    
  

13、Array.prototype.reduceRight(fn(accumulator,item, index, arr){},initVal)----对数组的元素从右到左调用fn,并将结果汇总为一个返回值

入参:

fn----数组元素调用的函数,必需;accumulator汇总值的变量

initVal----给accumulator的初始化的值,非必需

返回值:对数组的元素从右到左调用fn,将结果汇总返回

注意:

如果arr是一个[],并且没有提供initVal,则抛错

如果arr是[],有提供initVal,则返回initVal的值

如果arr不是[],并且没有提供initVal,则arr的第一个元素的值作为accumulator的初始值,并从arr.length - 2位置的元素开始处理


  
    
  

 

参考文章:

MDN上关于array的方法polyfill:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array

 

 

 

 

你可能感兴趣的:(js,Arra.prototype)