JavaScript一些数组原型方法实现
自己如何实现forEach、filter等数组方法
Vgbire
掘金:https://juejin.cn/user/2972719297608072/posts
展开
-
ES6新增数组函数的实现(八)——自己实现一个reduce()
reduce() 方法对数组中的每个元素执行一个由您提供的reducer函数(升序执行),将其结果汇总为单个返回值。 Array.prototype.reduce= function(callback, initValue){ var arr = this; // 用户是否传入初始值 var sum = initValue || 0; for(let i = 0; i < arr.length; i++){ sum = callback(arr[i], sum, i); } ret原创 2020-05-14 15:32:31 · 248 阅读 · 0 评论 -
ES6新增数组函数的实现(七)——自己实现一个some()
some() 方法测试数组中是不是至少有1个元素通过了被提供的函数测试。它返回的是一个Boolean类型的值。 Array.prototype.some= function(callback){ var arr = this; for(let i = 0; i < arr.length; i++){ if(callback(arr[i], i)){ return true; } } return false; } // 测试 var testArr = [1,2,3,4,5]原创 2020-05-14 15:32:16 · 198 阅读 · 0 评论 -
ES6新增数组函数的实现(六)——自己实现一个every()
every() 方法测试一个数组内的所有元素是否都能通过某个指定函数的测试。它返回一个布尔值。 Array.prototype.every= function(callback){ var arr = this; for(let i = 0; i < arr.length; i++){ if(!callback(arr[i], i)){ return false; } } return true; } // 测试 var testArr = [1,2,3,4,5]; var原创 2020-05-14 15:32:00 · 224 阅读 · 0 评论 -
ES6新增数组函数的实现(五)——自己实现一个filter()
filter() 方法创建一个新数组, 其包含通过所提供函数实现的测试的所有元素。 Array.prototype.filter= function(callback){ var arr = this; var result = []; for(let i = 0; i < arr.length; i++){ if(callback(arr[i], i)){ result.push(arr[i]); } } return result; } // 测试 var testAr原创 2020-05-14 15:31:40 · 262 阅读 · 0 评论 -
ES6新增数组函数的实现(四)——自己实现一个map()
map() 方法创建一个新数组,其结果是该数组中的每个元素都调用一次提供的函数后的返回值。比较简单,直接贴代码。 Array.prototype.map= function(callback){ var arr = this; for(var i = 0; i < arr.length; i++){ arr[i] = callback(arr[i], i); } return arr; } // 测试 var testArr = [1,2,3,4,5]; var value = te原创 2020-05-14 12:55:16 · 305 阅读 · 0 评论 -
ES6新增数组函数的实现(三)——自己实现一个findIndex()
没什么好说的,比较简单,直接贴代码。 Array.prototype.findIndex = function(callback){ var arr = this; for(var i = 0; i < arr.length; i++){ if(callback(arr[i], i)){ return i; } } return; } // 测试 var testArr = [1,2,3,4,5]; var value = testArr.findIndex((item,i原创 2020-05-13 23:03:21 · 281 阅读 · 0 评论 -
ES6新增数组函数的实现(二)——自己实现一个find()
没什么好说的,比较简单,直接贴代码。 Array.prototype.find = function(callback){ var arr = this; for(var i = 0; i < arr.length; i++){ if(callback(arr[i], i)){ return arr[i]; } } return; } // 测试 var testArr = [1,2,3,4,5]; var value = testArr.find((item,index)原创 2020-05-13 22:57:49 · 167 阅读 · 0 评论 -
ES6新增数组函数的实现(一)——自己实现一个forEach()
没什么好说的,直接贴代码。 Array.prototype.forEach = function(callback){ var arr = this; for(var i = 0; i < arr.length; i++){ callback(arr[i], i); } return; } var arr = this; 这里是关键,这样在大多数情况下就不会改变原数据 什么?ES6新增数组函数调用时都不会改变原数组?那你就错了。 推荐看我的这篇博文https://blo原创 2020-05-13 22:28:43 · 414 阅读 · 0 评论