filter和forEach方法都是JS中的数组方法,用于遍历数组,方法内固定由一个函数作为参数,每遍历一次数组中的元素,便会调用该函数,函数中有三个参数 arr.filter(function(value,index,array) {函数体})(标准格式)
注意:参数名称并不固定,可随意填写如 arr.filter(function(a,ib,jj)
参数名 | 参数类型 | 代表的意义 |
---|---|---|
value | 必填参数 | 当前遍历的元素值 |
index | 选填参数 | 当前遍历的元素值的下标 |
array | 选填参数 | 当前遍历的数组本身 |
此方法常用于过滤数组中满足条件的数
demo1(单参数)
<script>
var arr = [1, 2, 3, 4, 5, 6, 7]
arr.filter(function(x) {
//遍历数组元素,并输出大于3的数
if (x >= 3) {
console.log(x)
}
})
</script>
结果如下:
并且该方法函数返回值会存放到一个新的数组当中:
demo2`(返回数组)
<script>
var arr = [1, 2, 3, 4, 5, 6, 7]
//定义一个数组接收返回值
var arr2 = arr.filter(function(x) {
//遍历数组元素,并输出大于3的数
if (x >= 3) {
reture x;
}
})
结果如下
最后看看三个参数一起打印的结果
demo3
<script>
var arr = [1, 2, 3, 4, 5, 6, 7]
arr.filter(function(a, b, c) {
console.log(a, b, c);
})
</script>
forEach方法同上
唯一的不同在于forEach方法不写reture的话并没有默认返回值而filter返回function处理结果为true时返回的集合,其他用法基本相同,包括参数的使用。
demo4(forEach没有返回值)
<script>
var arr = [1, 2, 3, 4, 5, 6, 7]
var arr2 = arr.filter(function(a, b, c) {
// console.log(a);
if (a > 3) {
return true;
}
})
console.log(arr2);
var arr3 = arr.forEach(function(a, b, c) {
// console.log(a);
if (a > 3) {
return true;
}
})
console.log("-------");
console.log(arr3);
</script>
结果如下