我是靠谱客的博主 秀丽毛豆,最近开发中收集的这篇文章主要介绍简单手写forEach等6个循环函数1.forEach2.map3.filter4.every5.some6.find7.findIndex,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1.forEach

Array.prototype.newForEach = function (callback) {
  for (let i = 0; i < this.length; i++) {
    callback(this[i], i, this)
  }
}

问:为什么return不能跳出整个循环

答:return可以跳出当前callback,, 而不能跳出整个for循环,类似for里面的continue


let arr = ['杰', '杰你', '哥们']
arr.newForEach(item => {
  if (item == '杰你') {
    return
  }
  console.log(item);
})

问:那怎么跳出整个循环?

答:try catch

let arr = ['杰', '杰你', '哥们']
try {
  arr.newForEach(item => {
    if (item == '杰你') {
      throw '错误'
    }
    console.log(item);
  })
} catch (error) {
  console.log(error);
}

 

2.map

let arr = [{ name: '小白', age: 19 }, { name: '小宏', age: 17 }]
Array.prototype.newMap = function (callback) {
  // 返回一个处理后的数组
  let res = []
  for (let i = 0; i < this.length; i++) {
    res.push(callback(this[i], i, this))
  }
  return res
}
let newArr = arr.newMap(item => {
  //返回处理的内容
  return `${item.name}今年${item.age}`
})
console.log(newArr);

 

3.filter

Array.prototype.newFilter = function (callback) {
  let res = []
  for (let i = 0; i < this.length; i++) {
    callback(this[i], i, this) && res.push(this[i])
  }
  return res
}
let arr = [1, 2, 3, 4, 5]
let newArr = arr.newFilter(item => {
  return item > 3
})
console.log(newArr);

4.every

Array.prototype.newEvery = function (callback) {
  for (let i = 0; i < this.length; i++) {
    //循环,如果有一个false就返回false
    if (!callback(this[i], i, this)) return false
    return true
  }
}
let arr = [1, 2, 3, 4, 5]
let res = arr.newEvery(item => {
  return item > 0
})
console.log(res);

5.some

Array.prototype.newSome = function (callback) {
  for (let i = 0; i < this.length; i++) {
    if (callback(this[i], i, this)) return true
  }
  return false
}
let arr = [1, 2, 3, 4, 5]
let res = arr.newSome(item => {
  return item > 14
})
console.log(res);

6.find

Array.prototype.newFInd = function (callback) {
  for (let i = 0; i < this.length; i++) {
    if (callback(this[i], i, this)) {
      return this[i]
    }
  }
  return '未找到'//原版是undefined
}
let arr = [{ id: 1, name: "小编" }, { id: 2, name: "小百" }]
let res = arr.newFInd(item => {
  return item.id == 21
})
console.log(res);

7.findIndex

Array.prototype.newFindIndex = function (callback) {
  for (let i = 0; i < this.length; i++) {
    if (callback(this[i], i, this)) {
      return i //如果找到返回当前索引
    }
  }
  return '找不到索引'//原版是-1
}
let arr = [{ id: 11, name: "小编" }, { id: 2, name: "小百" }]
let res = arr.newFindIndex(item => {
  return item.id == 2
})
console.log(res);

最后

以上就是秀丽毛豆为你收集整理的简单手写forEach等6个循环函数1.forEach2.map3.filter4.every5.some6.find7.findIndex的全部内容,希望文章能够帮你解决简单手写forEach等6个循环函数1.forEach2.map3.filter4.every5.some6.find7.findIndex所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部