1. 程式人生 > >Array 物件 filter() 方法過濾元素

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>