Array 对象 filter() 方法过滤元素

 Array filter() 方法

     filter() 方法创建一个新的数组,新数组中的元素是通过检查数组中符合条件的所有元素。

     filter() 不会对空数组进行检测,也不会改变原始数组,而是返回一个新的数组。

     注意与《JavaScript Array map() 方法》的区别,map 与 filter 都是在函数中处理原数组中的每一个元素,并且返回新的数组,原数组不变。不同的是 map 方法对每个元素的处理结果必须返回,即无论对元素做了什么操作,但必须返回一个结果;而 filter 方法处理每个元素重点是判断元素是否符合某个条件,如果处理结果为 true ,则返回此元素,否则不再返回此元素。

语法:array.filter(function(currentValue,index,arr), thisValue)

参数 描述
function(currentValue, index,arr) 必须。函数,数组中的每个元素都会执行这个函数
函数参数:
参数 描述
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>

猜你喜欢

转载自blog.csdn.net/wangmx1993328/article/details/84344661