文章目录

  • 一、every()
  • 二、some()
  • 三、foreach()
  • 四、map() 映射/对应
  • 五、filter()
  • 六、reduce汇总

一、every()

专门判断一个数组中是否所有元素都符合要求

var 判断结果=数组.every(function(当前元素值,当前下标i,当前数组){//回调函数return 检查当前元素值是否符合要求,并返回检查结果}
);

原理:
i. every内自带for循环,自动遍历数组中每个元素

ii. 每遍历一个元素,就自动调用一次回调函数

iii. 每次调用回调函数时,都 自动传入三个值:
①当前元素值
②当前下标i
③当前数组对象

iv. 在回调函数内, 判断当前元素值是否符合要求,并返回判断结果为every函数

  • 结果为true,当前元素符合要求,every会自动遍历下一个元素。直到所有元素遍历完成,都没有碰到不符合要求的元素,则结束循环,整体返回true,说明当前数组中所有元素都符合要求!
  • 结果为false,当前元素不符合要求,every立刻退出循环,直接返回false,表明当前数组中不是所有元素都符合要求。

示例:

var arr1=[1,2,3,4,5];//false
//                         当前元素值 下标 数组
//                               ↓    ↓   ↓
var result1=arr1.every(function(elem, i, arr) {console.log(`arr1.every()自动调用一次回调函数,elem=${elem},i=${i},arr=${arr},返回判断结果:${elem%2==0}`);return elem%2==0
})
console.log(result1);//false

二、some()

专门检查一个数组中是否包含符合要求的元素

var 判断结果=数组.some(function(当前元素值, 当前下标位置, 当前数组){return 判断当前元素值是否符合要求}
)

原理:
i. some内自带for循环,自动遍历数组中每个元素

ii. 每遍历一个元素,就自动调用一次回调函数

iii. 每次调用回调函数时,都 自动传入三个值:
①当前元素值
②当前下标i
③当前数组对象

iv. 在回调函数内,判断当前元素值是否符合要求,并返回判断结果给some函数

  • 结果为true,则说明至少当前元素符合要求,some立刻退出循环,直接返回true,说明当前数组中包含至少一个符合要求的元素。
  • 结果为false,则说明当前元素不符合要求,some只能继续遍历下一个元素。如果直到遍历结束都没有发现符合要求的元素,则返回false。说明当前数组中不包含符合要求的元素。

示例:

console.log(
arr1.some(function(element,index,arr) {console.log(`arr1.some()内自动调用了一次回调函数。收到:当前元素值=${element},当前下标i=${index},当前数组${arr}。本次返回:${element%2==1}`);//只判断当前元素值是不是偶数return element%2==1//不能被2整除}
));

三、foreach()

专门代替for循环来简化遍历索引数组的特殊函数

数组.forEach(function(当前元素值, 当前下标i, 当前数组) {对当前元素值执行操作
})

原理:
i. forEach内 自带for循环,自动遍历数组中每个元素

ii. 每遍历一个元素,就自动调用一次回调函数

iii. 每次调用回调函数时,都 自动传入三个值:
①当前元素值
②当前下标i
③当前数组对象

iv. 在回调函数内,对当前元素执行规定的操作。不需要返回值。

示例

function showResults(value, index, a) {console.log(`value:${value}index:${index}`);
}//可以forEach遍历使用一个函数方法
var letters = ['a','b','c'];
letters.forEach(showResults);

四、map() 映射/对应

专门读取原数组中每个元素值,进行修改后,生成一个新数组返回

var 新数组=原数组.map(function(当前元素值, 当前下标i, 当前数组){return 当前元素值修改后的新值}
)

原理:
i. 内部 创建一个新的空数组等待

ii. map内自带for循环,自动遍历原数组中每个元素

iii. 每遍历一个元素,就自动调用一次回调函数

iv. 每次调用回调函数时,都自动传入三个值:
①当前元素值
②当前下标i
③当前数组对象

v. 在 回调函数内,对当前元素值进行修改,并将修改后的新值返回给map函数

vi. map函数接到新值后, 自动放入新数组中对应的位置。

vii. 遍历结束, map返回新数组。原数组保持不变。

var arr=[1,2,3,4,5];
//希望将原数组中元素值*2,放入新数组中返回,原数组保持不变!
var arr2=arr.map(function(ele,i){console.log(`arr.map()内自动调用一次回调函数。收到当前元素值=${ele},当前下标i=${i}。将${ele}x2后获得新值${ele*2},放入新数组中${i}位置`)return 当前元素值*2}
);
console.log(arr);
console.log(arr2);

五、filter()

返回数组中符合条件的所有元素

var 新数组=原数组.filter(function(当前元素值, 当前下标i, 当前数组){return 当前符合条件的元素值}
)

原理:
i. 内部 创建一个新的空数组等待

ii. map内自带for循环,自动遍历原数组中每个元素

iii. 每遍历一个元素,就自动调用一次回调函数

iv. 每次调用回调函数时,都自动传入三个值:
①当前元素值
②当前下标i
③当前数组对象

v. 在 回调函数内,判断该元素值是否符合条件,并将符合条件的元素返回给新数组

vi. map函数接到新值后, 自动放入新数组中对应的位置。

vii. 遍历结束, map返回新数组。原数组保持不变。

示例:筛选类型为字符串的元素

var arr = [5, "element", 10, "the", true];
var result = arr.filter (function (value) {return (typeof value === 'string');}
);
console.log(result);

六、reduce汇总

reduce 函数接收4个参数:

  • Accumulator (acc) (累计器)
  • Current Value (cur) (当前值)
  • Current Index (idx) (当前索引)
  • Source Array (src) (源数组)

reduce 函数的返回值分配给累计器,该返回值在数组的每个迭代中被记住,并最后成为最终的单个结果

//示例一:
var sum = [0, 1, 2, 3].reduce(function (accumulator, currentValue) {return accumulator + currentValue;
}, 0);//箭头函数省略写法:sum
var arr = [1,3,5,7];
var result = arr.reduce( (pre, val) => pre+val, 0 );
console.log(result);
//示例二:
function appendCurrent(previousValue, currentValue) {return previousValue +"::" + currentValue;
}var elements = ["abc", "def","123","456"];
function reduce() {var result = elements.reduce(appendCurrent);console.log(result);//abc::def::123::456
}
reduce();
//从右向左调用
function reduceRight() {var result = elements.reduceRight(appendCurrent);console.log(result);
}
reduceRight();

ES5(三)——数组新增函数every()、some()、map()、foreach()、filter()和reduce()汇总相关推荐

  1. map 长度_Python实用教程系列——高阶函数Map、Filter、Reduce

    点击上方蓝色文字关注我们吧 有你想要的精彩 作者 | 那个百分十先生出品 | Python知识学堂 上次推文我们介绍了python中的<Logging日志模块>的相关知识,这次推文我们将学 ...

  2. Python的map、filter、reduce函数

    Python的map.filter.reduce函数 map函数func作用于给定序列的每个元素,并用一个列表来提供返回值. map函数python实现代码: def map(func,seq):  ...

  3. 如何用Map、Filter和Reduce替换Python For循环?

    2020-01-06 17:00:00 全文共2375字,预计学习时长7分钟 图源:Unsplash 屏幕前的你,瞅瞅看,你的代码是不是通篇都是For循环?是不是眯眼靠近屏幕才能看清自己的代码? 没错 ...

  4. 在幕后看看Swift中的Map,Filter和Reduce的实现

    一个函数接受一些输入,对它做一些事情并创建一个输出.功能有签名和正文.如果为函数提供相同的输入,则始终获得相同的输出.简而言之,这是函数的定义. 现在我们将通过仔细研究它们来讨论更多功能.我们将在Sw ...

  5. map for循环_如何用Map、Filter和Reduce替换Python For循环?

    全文共2375字,预计学习时长7分钟 图源:Unsplash 屏幕前的你,瞅瞅看,你的代码是不是通篇都是For循环?是不是眯眼靠近屏幕才能看清自己的代码? 没错,我就是这样的.(难以切齿) For循环 ...

  6. python进阶(小白也能看懂)——Map、Filter、Reduce

    python进阶(小白也能看懂)--Map.Filter.Reduce 第三篇 Map.Filter.Reduce是python中常用的函数,使用这些函数能够给我们带来很多便捷. Map map(fu ...

  7. python中 lambda, map ,filter ,reduce讲解

    lambda 是匿名函数 同来表达简单的函数 使用lambda函数应该注意的几点: lambda定义的是单行函数,如果需要复杂的函数,应该定义普通函数 lambda参数列表可以包含多个参数,如 lam ...

  8. [转载] Python---函数式编程(map()、filter()和reduce())总结

    参考链接: 带有示例的Python中的map(),filter()和reduce() (1)map()函数 map() 函数的基本语法格式为:map(function, iterable) 其中,fu ...

  9. python的map,filter,reduce函数

    Map函数  map()函数接收两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回.  举例说明  比如我们有一个函数f(x)=x2,要把这个函 ...

最新文章

  1. 我,斯坦福AI读博,李飞飞是师娘,5年5篇顶会论文,依然一度抑郁怀疑人生
  2. 最小生成树(求村落之间最小修哪几条路能使耗资最小)
  3. D2 第11届前端技术论坛记录
  4. python开发需要掌握哪些知识-Python的10个基础知识点,新手必须背下来!
  5. MyBatis 配制文件层次表
  6. MyEclipse配色字体等配置的解决方案
  7. pc模式 华为mate30_华为Mate30国内发布,这篇可能是全网最全干货贴
  8. 是什么成就了卓越的程序员?
  9. raspberry pi3_Raspberry Pi 3,Linux Mint安全漏洞,针对Zika病毒的Google数据处理等
  10. 这位硬核程序员,想好怎么过春节了吗?
  11. 两种方法上传本地文件到github
  12. AcWing 841. 字符串哈希(字符串Hash)
  13. 象棋名手手机版2019最新版_象棋名手64核比赛冠军版2019
  14. 『解疑』vue修改html图标,tilte左边的图标(以图片格式作为图标)
  15. 不小心隐藏IDEA的main menu,让它恢复显示的解决方法
  16. vue实现刷新页面,页面回到顶部
  17. Google maps及51ditu的图片切割及存储方法
  18. 转义字符 \r \v \f
  19. Win10系统Edge可以上网其他浏览器不能上网怎么回事
  20. SyntaxError: Missing parentheses in call to ‘print‘. 正解

热门文章

  1. 必须在构造函数基/成员初始值设定项列表中初始化
  2. poj 1734 (最小环)
  3. ASP.NET MVC2 使用绑定时 等号和冒号的差别 %=%和%:%的区别
  4. 【转】Visual Studio 2005 上 AJAX(AjaxControlToolkit) 的安装
  5. chrome中Blackbox Script 黑盒脚本作用及用法
  6. 用javascript实现有效时间的控制,并显示要过期的时间
  7. margin-top失效的解决办法
  8. 入门机器学习(一)--单变量线性回归
  9. 求“厉害”数 (10 分)
  10. C语言-输入一个正整数,输出它的所有质数因子