js模拟实现Array的Map、Every、Some、Reduce、Find方法
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方法相关推荐
- JS中数组(Array)、Json对象长度(length)获取方法
JS中数组(Array).Json对象长度(length)获取方法 1.数组 var array = []; var length = array.length; 2.JSON对象 1)方法1: va ...
- JS模拟实现数组的map方法
昨天使用map方法的时候,突然感觉一直在直接用,也没有试试是怎么实现的,本来想直接搜一篇文章盘一下子,结果没搜到合适的,好吧,那就自己来写一下子吧 今天就来实现一个简单的map方法 首先我们来看一下m ...
- Swfit Array 遍历 map flatMap filter reduce
官网文档:Apple Developer Documentation 常用属性和方法可查看官网文档. 一.遍历 这里主要记录下遍历方法. 使用for in 遍历 for item in arr {pr ...
- JS中集合对象(Array、Map、Set)及类数组对象的使用与对比
JS中集合对象(Array.Map.Set)及类数组对象的使用与对比 在使用js编程的时候,常常会用到集合对象,集合对象其实是一种泛型,在js中没有明确的规定其内元素的类型,但在强类型语言譬如Java ...
- es6 迭代器(遍历器)Iterator 自定义遍历器 lterator/简单模拟values方法 for of运行机制 Array/Set/Map默认迭代器接口 对象设置迭代器
文章目录 迭代器 Iterator 用处 (需要自定义遍历数据的时候) 自定义 遍历器 lterator 简单模拟values方法 Array Set Map 默认迭代器接口 entries valu ...
- JS数组中 forEach() 和 map() 的区别
JS数组中 forEach() 和 map() 的区别 Array中 Array.forEach()和 Array.map()方法之间的区别. forEach()和map()方法通常用于遍历Array ...
- mock模拟接口测试 vue_Easy Mock以及Vue+Mock.js模拟数据
Easy Mock以及Vue+Mock.js模拟数据 一.Mock.js简介 Mock.js是一个可以模拟后端数据,也可以模拟增删改查操作的js库 基础语法规范 数据模板中的每个属性由 3 部分构成: ...
- array.prototype.map()如何工作
by Pradeep Pothineni 通过Pradeep Pothineni array.prototype.map()如何工作 (How array.prototype.map() works) ...
- html页面字符串转map,js将字符串转成map
在jsp页面中写js怎么把map转换成json? 我在一个jsp页面写的js,通过var map="${chat1DataList}";获取的数据是[jsp中可以使用alibaba ...
最新文章
- 看完苹果这场最新发布会,我只能说:太sao了
- android studio导出apk步骤
- Unity 高清渲染管线 ShaderGraph 实现简单的表面水流效果
- 选择计算机系统的依据是什么,大学计算机基础 试题
- 巨坑!这公司的行为,挺适合清明节!
- python常用算法有哪些_python常见排序算法基础教程
- Fabric1.4源码解析:客户端创建通道过程
- OpenCascade一些常用的API
- Arcgis学习笔记(二)投影和定义投影
- 图解hadoop原理
- sis 最新_传统SIS系统面临考验——“可持续的安全仪表系统”来袭
- 依图科技创始人:如何对AI技术和产业发展更全面的理解?
- numpy 三角函数 sin()、cos()、tan() 反三角函数arcsin,arccos,arctan numpy.degrees()
- 打开outlook显示找不到outlook数据文件如何处理
- servlet的认识和了解(3)
- 屏幕的背光是什么呢?
- 怎么确保数据在网络传输的安全性?
- 冈萨雷斯图像处理---非锐化掩蔽和高提升滤波
- HQChart使用教程30-K线图如何对接第3方数据35-固定范围/可视范围成交量分布图数据
- 马云卸任阿里巴巴CEO演讲全文:因为信任,所以简单!