34、数组声明式系列方法的使用

(1)产生一个每个元素都比原来大10的新数组map
function addTen(arr){
  return arr.map((item,index)=>{
    return item+10;
  })
}
(2)得到数组中所有奇数的和reduce
function getAdd(arr){
  arr.reduce((pretotal,item,index)=>{
    return item%2 === 1 ? pretotal+item:pretotal;
  },0)
}
(3)得到值大于8且为偶数的filter
function filterArr(arr){
  return arr.filter((item,index)=>{
    return item>8&&item%2===0;
  })
}
(4)找出一个值大于8且下标是偶数的元素find
function getArr(arr){
  return arr.find((item,index)=>{
    return item>8&&index%2===0;
  })
}
(5)找出一个值大于8且下标是偶数的元素的下标findIndex
function getArrindex(arr){
  return arr.findIndex((item,index)=>{
    return item>8&&index%2===0;
  })
}
(6)判断下标为偶数的元素是否都是奇数every
funcrion getConfirm(arr){
  return arr.every((item,index)=>{
    //下标为奇数或者下标为偶数值都是奇数的元素
    return index%2 === 1 || (index%2 === 0 && item % 2 === 1)    
  })
}
(7)是否有下标为偶数的元素值为奇数some
funcrion getConfirm(arr){
  return arr.some((item,index)=>{
    //下标为奇数或者下标为偶数值都是奇数的元素
    return index%2 === 1 || (index%2 === 0 && item % 2 === 1)    
  })
}
自定义数组声明式方法
  • map
Array.prototype.map = function(callback){
  const arr = [];
  //遍历当前数组,调用callback得到一个结果数据,添加到arr
  for(let i = 0;i < this.length;i++){            //this就是原数组
    const element = this[i];
    arr.push(callback(element,i))
  }
  return arr;
}
  • reduce
Array.prototype.redece = function(callback,initialVal){
     let result = initialVal;
   for(let i = 0;i < this.length;i++){
           //recude三个参数,上一次的累加结果,value,index;上一次累加结果由callback决定
            result = callback(result,this[i],i)    
   }
   return result;
}
  • filter
//调用callback得到一个boolean值,如果为true那么就将值push到结果中去
Array.prototype.filter = function(callback){
   const result = [];
   for(let i = 0;i < this.length;i++){
      if(callback(this[i],i)){
        result.push(this[i]);
      }
   }
   return result;
}
  • find
//遍历当前数组,调用callback,返回boolean值,如果为true那么就返回这个值
Array.prototype.find = function(callback){
  for(let i = 0;i < this.length;i++){
      const element = callback(this[i],i)
      const result = this[i];
    if(element){
      return result;
    }
  }
  return undefined;    //没有匹配的返回undefined
}
  • findIndex
//遍历当前数组,调用callback,返回boolean值,如果为true那么就返回这个值
Array.prototype.findIndex = function(callback){
  for(let i = 0;i < this.length;i++){
    if(callback(this[i],i)){
      return i;
    }
  }
  return -1;    //没有匹配的返回undefined
}
  • every
//遍历,一点callback返回false,那么返回false,都不为false,返回true
Array.prototype.every = function(){
    let result = true;
  for(let i = 0;i < this.length;i++){
    if(!callback(this[i],i)){
      result = false
    }
  }
  return result;
}
  • some
//一旦callback为true返回true否则返回false
Array.prototype.some = function(){
  let result = false;
  for(let i = 0;i < this.length;i++){
    if(callback(this[i],i)){
      result = true
    }
  }
  return result;
}

results matching ""

    No results matching ""