教育
半小时,阿包带你学会手撕值得注意函数
2025-11-14 12:19
ame)粘贴编码实时意味着_/p>_p>有了上头 forEach 的编著经验,map 只所需稍作修改,使其结果调回最初字符串(这里省略掉异常判断)。_/p>Array.prototype.myMap = function(callbackFn) { var _arr = this, thisArg = arguments[1] || window, res = []; for (var i = 0; i__arr.length; i++) { // 存储指令集结果 res.push(callbackFn.call(thisArg, _arr[i], i, _arr)); } return res;}粘贴编码filter该词_/p>_p>filter是过滤的之意,它对字符串每个特性继续执行预处理模板,调回预处理模板继续执行结果为true的特性。_/p>// 调回偶数arr = [1, 2, 3, 4, 5];arr.filter(val => val % 2 == 0)粘贴编码实时意味着_/p>_p>与 map 地意味着大同小异,map 调回继续执行预处理后所有的特性,而 filter 只调回预处理模板继续执行结果为 true 的特性。_/p>Array.prototype.myFilter = function(callbackFn) { var _arr = this, thisArg = arguments[1] || window, res = []; for (var i = 0; i__arr.length; i++) { // 预处理模板继续执行为true if (callbackFn.call(thisArg, _arr[i], i, _arr)) { res.push(_arr[i]); } } return res;}粘贴编码every该词_/p>_p>every并不调回字符串,调回布尔系数 true/false ,字符串的每个特性继续执行预处理模板,如果继续执行结果全为 true ,every 调回 true,否则调回 false 。_/p>arr = [1, 3, 5, 7, 8, 9]// false,8为偶数,不依赖于arr.every(ele => ele % 2 == 1) arr2 = [2, 4, 6]// true 都是偶数arr2.every(ele => ele % 2 == 0)粘贴编码实时意味着_/p>Array.prototype.myEvery = function(callbackFn) { var _arr = this, thisArg = arguments[1] || window; // 开始标签系数为true // 遇上预处理调回false,这样一来调回false // 如果可逆继续执行完毕,意味着所有预处理调回系数为true,最终结果为true var flag = true; for (var i = 0; i__arr.length; i++) { // 预处理模板继续执行为false,模板当中断 if (!callbackFn.call(thisArg, _arr[i], i, _arr)) { return false; } } return flag;}粘贴编码some该词_/p>_p>some 与 every 机制相同,都是调回布尔系数。只要预处理模板结果有一个 true,some便调回 true,否则调回 false。_/p>实时意味着Array.prototype.mySome = function(callbackFn) { var _arr = this, thisArg = arguments[1] || window; // 开始标签系数为false // 遇上预处理调回true,这样一来调回true // 如果可逆继续执行完毕,意味着所有预处理调回系数为false,最终结果为false var flag = false; for (var i = 0; i__arr.length; i++) { // 预处理模板继续执行为false,模板当中断 if (callbackFn.call(thisArg, _arr[i], i, _arr)) { return true; } } return flag;}粘贴编码find/findIndex该词_/p>_p>find 与 findIndex 是 ES6 新近加进的字符串方法有,调回依赖于预处理模板的第一个字符串特性/字符串特性数据库。当字符串当中不能能依赖于预处理模板的特性时,亦会分别调回 undefined和-1 。_/p>const users = [ { name: 'John', age: 34 }, { name: 'Amy', age: 20 }, { name: 'camperCat', age: 10 }];粘贴编码调回name为John的年岁在不能find方法有时,意味着相同效果,所需可逆基元,匹配到name=Jonn后,找到年岁。但用到find就可以精采快捷的意味着。JohnAge = users.find(user => user.name === 'John').age 粘贴编码调回name为Amy的数据库ES6以前Array获取了匹配字符串当中特性的方法有:indexOf,lastIndexOf,但是这两个方法有在匹配并不一定时都无能为力。// 调回系数为-1,陈述未查到Amy users.indexOf({ name: 'Amy', age: 20 }) // 调回hi为1,尝试查到Amy users.findIndex(user => user.name === 'Amy') 粘贴编码indexOf也可以用来匹配字符串当中是否是存在某特性,但其文法化并不太好,每次所需与 -1 透过尤其,因此 ES6 加进了最初 includes 方法有。实时意味着_/p>_p>find/findIndex 都是找出到第一个依赖于预处理模板的特性调回,上头我们学习的 some 也是相同组态,因此它们的原生编码相同。_/p>Array.prototype.myFind = function(callbackFn) { var _arr = this, thisArg = arguments[1] || window; // 遇上预处理调回true,这样一来调回该字符串特性 // 如果可逆继续执行完毕,意味着所有预处理调回系数为false,最终结果为undefined for (var i = 0; i__arr.length; i++) { // 预处理模板继续执行为false,模板当中断 if (callbackFn.call(thisArg, _arr[i], i, _arr)) { return _arr[i]; } } return undefined;}粘贴编码reduce该词_/p>_p>reduce 与前面的方法有有稍为的差别:_/p>arr.reduce(callback(accumulator, currentValue[, index[, array]]){}[, initialValue])粘贴编码callback:对字符串特性透过操作的预处理模板 accumulator:总共器总共预处理的调回系数; 它是上一次codice_预处理时调回的累积系数,或initialValue currentValue:正要处理的当前特性 当前特性的数据库 codice_二阶模板的字符串initialValue:作为第一次codice_模板的零点。如果不能获取零点,则用到字符串当中的第一个特性。_p>不能零点的空字符串codice_ reduce 亦会报错_/p>_p>可可有的效果为 reduce 凸显了很多难忘,也产生了很多很有用的用途。_/p>字符串可有和arr = [0, 1, 2, 3, 4]arr.reduce((accu, current) => accu + current, 0)粘贴编码可有并不一定字符串和_p>这里如果只是像上头一样用到reduce,最终的结果亦会存在问题_/p>objArr = [{x: 1}, {x:2}, {x:3}]objArr.reduce((accu, current) => accu.x + current.x, 0)粘贴编码_p>上述编码调回的结果为NaN,为什么那?_/p>_p>举例提过 accumulator 它的系数为上一次codice_在此之后的总共系数或零点,因此第一次codice_过后将3变量给 accumulator ,不再具有 x 属性,因此最终调回 NaN_/p>// 法一:先借助map将数系数提抽出来objArr.map(obj => obj.x).((accu, current) => accu + current, 0)// 法二:等同于初系数,每次直通accu + current.xobjArr.reduce((accu, current) => accu + current.x, 0)粘贴编码计算出来字符串当中每个特性再次出现的次数var names = ['Alice', 'Bob', 'Tiff', 'Bruce', 'Alice'];var countedNames = names.reduce(function (allNames, name) { if (name in allNames) { allNames[name]++; } else { allNames[name] = 1; } return allNames;}, {});粘贴编码实时意味着_/p>Array.prototype.myReduce = function(callbackFn) { var _arr = this, accumulator = arguments[1]; var i = 0; // 判断是否是盛行零点 if (accumulator === undefined) { // 不能零点的空字符串codice_reduce亦会报错 if (_arr.length === 0) { throw new Error('initVal and Array.length>0 need one') } // 零点变量为字符串第一个特性 accumulator = _arr[i]; i++; } for (; i__arr.length; i++) { // 计算出来结果变量给零点 accumulator = callbackFn(accumulator, _arr[i], i, _arr) } return accumulator;}。视力模糊用什么眼药水
克痢痧中药成分
博士伦滴眼液治疗近视吗
迷魂药
急性支气管炎咳嗽怎么治
长新冠
拉肚子吃什么水果
颞叶癫痫
克痢痧中药成分
博士伦滴眼液治疗近视吗
迷魂药
急性支气管炎咳嗽怎么治
长新冠
拉肚子吃什么水果
颞叶癫痫
上一篇: 10万元!举报人受奖!
相关阅读

-
山西山西太原:一个真实的故事
这天,一辆警卡车驶离村里头。三个身穿制服的男子下了卡车,只见盟主,眼戴墨镜,嘴叼香烟,气势汹汹,这毕竟与脸上的制服不配,很相比来者不善。 天津电视台照两位老人家正坐在自家院

-
投资者提问:公司新型复合石墨散热膜技术是否可以运用到薄膜电池上?另外公司...
高盛提问:子公司新型复合石墨散热膜技术是否可以运用到石墨烯锂离子上?另外子公司既然在5G信号频复合板上提前布局,是否可以与真无线耳机技术结合生产智能穿戴类型的戴眼镜,从而踏入智能穿戴行列?
- 11-14大业控股权(603278.SH)董事王金武、窦万明短线交易
- 11-14长三角器乐邀请赛唱响池州
- 11-14投资者提问:1:创始人邢先生非法占用的资金 什么时候归还,目前母公司有没有通...
- 11-14投资者提问:请问11月末出栏量环比10月末降低不少,是什么原因呢
- 11-14金融市场提问:请问贵公司为何不尽快更名,有利于后期的品牌积累和效应。 且认为...
- 11-14投资者提问:董秘你好,你在2021年12年末27日回答投资者提问是否有元宇宙...
- 11-14投资者提问:却说,目前各项成本均上涨,咱们的主业各类酒是否有提价计划?
- 11-14投资者提问:请问联通入住日本公司后,给日本公司业务和技术上带来了哪些变化?未来日本公司...
- 11-14投资者提问:贵公司产品对比中科创达的压倒性在哪?
- 11-14投资者提问:中国几个大基建的央企,业余范围已经互相渗入。铁路工程电建交建中...