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);