1、参数为回调函数,function(数组中的项目,序号,数组本身){ },至少接收一个项目(item、value)参数
① every
数组中所有内容都满足回调函数的测试,返回值才为true,否则false,遇假停止,返回false
//value是数组中的每个元素的值,这个匿名函数会被数组循环调用 var res = nums.every(function(value){ //其中内容就是对值的判断条件,例如验证<50 console.log(`当前判断的值是:${value}`); return value<50; }); //如果匿名函数中的判断,都是真的,则最终的every的返回值就是真 //有任何假的,则返回值就是假 console.log(res); //判断都是偶数 var res1 = nums.every(function(value,index,array){ //匿名函数共有3个参数:值 值的索引 当前数组。后两个参数使用太少了 console.log(`${value},${index},[${array}]`); return value%2 == 0; })
②some
数组中内容存在任意一个满足回调函数的测试的,返回值为true, 否则false,遇真停止,返回
var teachers = [ {name:"lily",age:39,married:true}, {name:"tom",age:27,married:false}, {name:"jack",age:22,married:true}, {name:"lucy",age:36,married:false}, ]; //判断数组中,是否存在年龄>35的人 var result = teachers.some(function(item,index,arr){ return item.age>35 }); console.log(result?"有人年龄>35":"没有年龄>35的"); //判断是否有已婚的 var result = teachers.some(function(item){ return item.married }) console.log(result?"有已婚":"没已婚");
③forEach
遍历数组, 每个数组元素都被 回调函数处理
//数组的forEach方法:快速遍历数组 var emps = [ {name:"丫丫",age:36}, {name:"久久",age:19}, {name:"明明",age:23}, ] //为每个年龄+1 emps.forEach(function(item){ item.age++; }) //年龄翻一倍 emps.forEach(function(item){ item.age*=2 })
④map
创建新数组,新数组由回调函数的返回值组成
//map:创建一个新的数组,数组的值都是回调函数的返回值组成的 var names = ["lily", "lucy", "john", "tom"]; //回调函数:依然具备三个参数,都是可选的 var new_names = names.map(function(item,index,arr){ return index + item.toUpperCase() });
⑤filter
创建新数组,满足回调函数中的条件的元素, 会加入到新数组
var emps = [ {name:"牛牛",gender:"男",age:20}, {name:"丫丫",gender:"女",age:25}, {name:"毛毛",gender:"女",age:29}, {name:"婷婷",gender:"男",age:32} ]; //找出所有女性,放在新数组中 var girls = emps.filter(function(item){ return item.gender == "女" }); //找出年龄<30的 var young = emps.filter(function(item){ return item.age<30 });
2、reduce: 合并数组中的元素的内容,形成最终的结果
参数1:回调函数:function (合并后的结果,item,index,arr){ }
参数2:合并结果的初始值
emps.reduce( function(sum,item){return sum + item.salary},0 );
var emps = [ {name:"lucy",salary:8000}, {name:"mike",salary:5500}, {name:"tom",salary:11000}, {name:"jerry",salary:7900}, ]; //计算所有工资的总和 //forEach写法: var sum = 0; emps.forEach(function(item){ sum += item.salary }) //reduce 写法: //参数1:回调函数:function (合并后的结果,item,index,arr){} //参数2:合并结果的初始值 let result = emps.reduce(function(sum,item){ return sum + item.salary },0);