数组filter,every,flat的作用

370 阅读1分钟
filter的作用

创建了一个新数组,新数组中是符合条件的所有元素

Array.prototypr.myfilter = function(fn,context){
  if(typeof fn !== "function"){
    return
  }
  const arr = this
  const temp = []
  for(let i=0;i<arr.length;i++){
    let flag = fn.call(context,arr[i],i,arr)
    if(flag){
      temp.push(arr[i])
    }
  }
  return temp
}
every的作用

查询数组中元素是否都满足要求,都满足则返回true,否则返回false

Array.prototypr.myevery = function(fn,context){
  if(typeof fn !== "function"){
    return
  }
  const arr = this
  let res = true
  for(let i=0;i<arr.length;i++){
    let flag = fn.call(context,arr[i],i,arr)
    if(!flag){
      res = false
      break
    }
  }
  return res
}
some的作用

查询数组中是否有元素满足要求,有满足则返回true并且不再往下执行,否则返回false

Array.prototypr.mysome = function(fn,context){
  if(typeof fn !== "function"){
    return
  }
  const arr = this
  let res = false
  for(let i=0;i<arr.length;i++){
    let flag = fn.call(context,arr[i],i,arr)
    if(flag){
      res = true
      break
    }
  }
  return res
}
flat的作用

扁平化数组,例如将二维数组转换成以为数组,三维数组转成一维二维数组。接受一个参数,不传入默认是1,表示拉平的层数。

Array.prototype.myFlat = function(n){
  const arr = this
  let resArr = []
  const dealArr = (data,i = 1)=>{
    data.forEach((item)=>{
      if(Array.isArray(item) && i !==0){
        dealArr(item,i-1)
      }else{
        resArr.push(item)
      }
    })
  }
  dealArr(arr,n)
  return resArr
}
let arr = [1,2,2,[3,4,4,[44]]]