Array.prototype.myMap = function(callback){var newArr = []for(var i = 0; i<this.length; i++) {  // this 是arr// 当前循环的元素放到自定义的函数中 进行运行并且 吧返回的结果放到新数组的对应索引newArr[i] = callback(this[i], i, this) // this[i]是当前的元素  i是当前的索引  console.log('callback', newArr)}return newArr  // 吧新的arr返回
}
// var arr = ["a","b","c","d","e"];
// var x = arr.myMap((value,index,arr) => {//   if (value === 'a') {//     return 'dd'
//   }
//   return value
// })// console.log('x', x)Array.prototype.myEvery = function(callback){var falg = true  // 设置一个flag 只有一个是false就改为falseif (this.length === 0) {// console.log('this', this) // 如果为空就直接返回truereturn true}for(var i = 0; i<this.length; i++) {  // this 是arrvar every = callback(this[i])if (!every) { // 如果在自定义函数中有返回值为false 的就直接返回falg = falsereturn false}}if (falg) { // falg为false就是不返回true  falg为true就是说明都是符合要求就直接返回true return true}
}// var arr = [32, 33, 88, 40];
// var x = arr.myEvery((age) => {//   return age >= 88;
// })
// console.log('x', x)Array.prototype.mySome = function(callback){var falg = false  // 设置一个flag 只有一个是true就改为trueif (this.length === 0) {// console.log('this', this) // 如果为空就直接返回truereturn true}for(var i = 0; i<this.length; i++) {  // this 是arrvar every = callback(this[i])if (every) { // 如果在自定义函数中有返回值为true 的就直接返回falg = truereturn true}}if (!falg) { // falg为true就是说明都是不符合要求的return false}
}// var arr = [32, 33, 7, 40];
// var x = arr.mySome((age) => {//   console.log('age', age)
//   return age >= 88;
// })
// console.log('x', x)Array.prototype.myReduce = function(callback){if (this.length === 0) {// console.log('this', this) // 如果为空就直接返回truereturn true}var total = 0for(var i = 0; i<this.length; i++) {  // this 是arrvar total = callback(total ,this[i])}return total
}// var numbers = [65, 44, 12, 4];
// var x = numbers.myReduce((total, num) => {//   console.log(total, num)
//   return total + num;
// })
// console.log('x', x)Array.prototype.myFind = function(callback){var falg = false  // 设置一个flag 只有一个是true就改为trueif (this.length === 0) {// console.log('this', this) // 如果为空就直接返回truereturn true}for(var i = 0; i<this.length; i++) {  // this 是arrvar every = callback(this[i])if (every) { // 如果在自定义函数中有返回值为true 的就直接返回当前元素falg = truereturn this[i]}}if (!falg) { // falg为true就是说明都是不符合要求的return -1}
}var arr = [32, 33, 88, 40];
var x = arr.myFind((age) => {return age >= 33;
})
console.log('x', x)

js模拟实现Array的Map、Every、Some、Reduce、Find方法相关推荐

  1. JS中数组(Array)、Json对象长度(length)获取方法

    JS中数组(Array).Json对象长度(length)获取方法 1.数组 var array = []; var length = array.length; 2.JSON对象 1)方法1: va ...

  2. JS模拟实现数组的map方法

    昨天使用map方法的时候,突然感觉一直在直接用,也没有试试是怎么实现的,本来想直接搜一篇文章盘一下子,结果没搜到合适的,好吧,那就自己来写一下子吧 今天就来实现一个简单的map方法 首先我们来看一下m ...

  3. Swfit Array 遍历 map flatMap filter reduce

    官网文档:Apple Developer Documentation 常用属性和方法可查看官网文档. 一.遍历 这里主要记录下遍历方法. 使用for in 遍历 for item in arr {pr ...

  4. JS中集合对象(Array、Map、Set)及类数组对象的使用与对比

    JS中集合对象(Array.Map.Set)及类数组对象的使用与对比 在使用js编程的时候,常常会用到集合对象,集合对象其实是一种泛型,在js中没有明确的规定其内元素的类型,但在强类型语言譬如Java ...

  5. es6 迭代器(遍历器)Iterator 自定义遍历器 lterator/简单模拟values方法 for of运行机制 Array/Set/Map默认迭代器接口 对象设置迭代器

    文章目录 迭代器 Iterator 用处 (需要自定义遍历数据的时候) 自定义 遍历器 lterator 简单模拟values方法 Array Set Map 默认迭代器接口 entries valu ...

  6. JS数组中 forEach() 和 map() 的区别

    JS数组中 forEach() 和 map() 的区别 Array中 Array.forEach()和 Array.map()方法之间的区别. forEach()和map()方法通常用于遍历Array ...

  7. mock模拟接口测试 vue_Easy Mock以及Vue+Mock.js模拟数据

    Easy Mock以及Vue+Mock.js模拟数据 一.Mock.js简介 Mock.js是一个可以模拟后端数据,也可以模拟增删改查操作的js库 基础语法规范 数据模板中的每个属性由 3 部分构成: ...

  8. array.prototype.map()如何工作

    by Pradeep Pothineni 通过Pradeep Pothineni array.prototype.map()如何工作 (How array.prototype.map() works) ...

  9. html页面字符串转map,js将字符串转成map

    在jsp页面中写js怎么把map转换成json? 我在一个jsp页面写的js,通过var map="${chat1DataList}";获取的数据是[jsp中可以使用alibaba ...

最新文章

  1. 看完苹果这场最新发布会,我只能说:太sao了
  2. android studio导出apk步骤
  3. Unity 高清渲染管线 ShaderGraph 实现简单的表面水流效果
  4. 选择计算机系统的依据是什么,大学计算机基础 试题
  5. 巨坑!这公司的行为,挺适合清明节!
  6. python常用算法有哪些_python常见排序算法基础教程
  7. Fabric1.4源码解析:客户端创建通道过程
  8. OpenCascade一些常用的API
  9. Arcgis学习笔记(二)投影和定义投影
  10. 图解hadoop原理
  11. sis 最新_传统SIS系统面临考验——“可持续的安全仪表系统”来袭
  12. 依图科技创始人:如何对AI技术和产业发展更全面的理解?
  13. numpy 三角函数 sin()、cos()、tan() 反三角函数arcsin,arccos,arctan numpy.degrees()
  14. 打开outlook显示找不到outlook数据文件如何处理
  15. servlet的认识和了解(3)
  16. 屏幕的背光是什么呢?
  17. 怎么确保数据在网络传输的安全性?
  18. 冈萨雷斯图像处理---非锐化掩蔽和高提升滤波
  19. HQChart使用教程30-K线图如何对接第3方数据35-固定范围/可视范围成交量分布图数据
  20. 马云卸任阿里巴巴CEO演讲全文:因为信任,所以简单!

热门文章

  1. python pillow无法安装_Pillow
  2. 会议管理的十条黄金原则
  3. java中quickhit_关于java的QuickHit打字游戏小项目
  4. uniapp中自定义导航栏动态获取高度
  5. 【MongoDB for Java】Java操作MongoDB
  6. ES6 Proxy和Reflect (上)
  7. Vue extend 学习
  8. Cordova自定义插件
  9. monkey测试小结
  10. 数据算法排序之归并排序