Array filter() 方法
filter() 方法创建一个新的数组,新数组中的元素是通过检查数组中符合条件的所有元素。
filter() 不会对空数组进行检测,也不会改变原始数组,而是返回一个新的数组。
注意与《JavaScript Array map() 方法》的区别,map 与 filter 都是在函数中处理原数组中的每一个元素,并且返回新的数组,原数组不变。不同的是 map 方法对每个元素的处理结果必须返回,即无论对元素做了什么操作,但必须返回一个结果;而 filter 方法处理每个元素重点是判断元素是否符合某个条件,如果处理结果为 true ,则返回此元素,否则不再返回此元素。
语法:array.filter(function(currentValue,index,arr), thisValue)
参数 | 描述 | ||||||||
---|---|---|---|---|---|---|---|---|---|
function(currentValue, index,arr) | 必须。函数,数组中的每个元素都会执行这个函数 函数参数:
|
||||||||
thisValue | 可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值。 如果省略了 thisValue ,"this" 的值为 "undefined" |
编码示例
<script type="text/javascript">
let json = {id: 101};
//往数组中多添置一些数据类型
let arr1 = [1, 2, 30, 25, 18, 40, "Ha", undefined, NaN, null, json];
let arr2 = arr1.filter(function (currentValue, index) {
console.log("开始处理第 " + index + " 元素");
//如果元素大于 25 ,则返回
return currentValue > 25;
});
console.log(arr1.toString());//原数组不变
console.log(arr2.toString());//新数组中包含 30,40
</script>
运行结果如下:
<script type="text/javascript">
let json = {id: 101};
//往数组中多添置一些数据类型
let arr1 = [1, 2, 30, 25, 18, 40, "Ha", undefined, NaN, null, json];
//过滤数组中所有的数值元素
let arr2 = arr1.filter(function (currentValue) {
return !isNaN(currentValue);
});
console.log(arr1.toString());//原数组不变
console.log(arr2.toString());//新数组中包含 1, 2, 30, 25, 18, 40
</script>