JS的filter用法


filter也是一個常用的操作,它用於把Array的某些元素過濾掉,然后返回剩下的元素。

map()類似,Arrayfilter()也接收一個函數。和map()不同的是,filter()把傳入的函數依次作用於每個元素,然后根據返回值是true還是false決定保留還是丟棄該元素。

(1)篩選過濾,保留偶數

例如,在一個Array中,刪掉奇數,只保留偶數,可以這么寫:

    <script type="text/javascript">
        var arr = [0,1,2,3,4,5,1,4,0];
        var arr_filter = arr.filter(function(x){
            return x%2 == 0;/* 篩選偶數 */ 
        })
        console.log(arr_filter)
    </script>

(2)篩選去除空格

篩選去除空格

    <script type="text/javascript">
        var arr = ['0',1,2,3,4,"",5,1,4,'0',""];
        var arr_filter = arr.filter(function(x){
            return x;/* 篩選空格 */ 
        })
        console.log(arr_filter)
    </script>

(3)回調函數

  filter()接收的回調函數,其實可以有多個參數。通常僅使用第一個參數,表示Array的某個元素。回調函數還可以接收另外兩個參數,表示元素的位置和數組本身:

        var arr = ['A','B','C','d'];
        var arr_filter = arr.filter(function(element,index,self){
            console.log(element);/* 依次打印'A','B','C','d' */
            console.log(index);/* 依次打印0,1,2,3 */
            console.log(self);/* 打印數組本身即arr */
            return true;
        })

    利用filter,可以巧妙地去除Array的重復元素:

        var arr_repeat = ['A','B','A','B','B','C','A','D'];
        var arr_filter = arr_repeat.filter(function(element,index,self){
            return self.indexOf(element) == index;
        })
        console.log(arr_filter);//返回['A','B','C','D']

    去除重復元素依靠的是indexOf總是返回第一個元素的位置,后續的重復元素位置與indexOf返回的位置不相等,因此被filter濾掉了。

 

 

 

.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM