1. 程式人生 > 實用技巧 >js--陣列的filter()過濾方法的使用

js--陣列的filter()過濾方法的使用

  • 前言

你還在通過for迴圈遍歷陣列嗎?你還在遍歷之後一項一項的通過if判斷過濾你需要的資料嗎?你還在寫著一大堆程式碼實現一個簡單的過濾資料功能嗎?那麼,今天他來了。他就是這裡要介紹的es6中陣列filter()過濾方法的使用,理解比較淺顯,希望在工作和學習中遇到的時候方便查詢。

  • 正文
    • 語法及定義

定義:filter()方法:建立一個包含通過測試的陣列元素的新陣列。

上面這句話有幾個需要注意的地方,首先,操作物件是陣列,還要注意filter()方法針對的是非空陣列的檢測過濾,其次是建立新陣列,也就是說filter()方法會產生新陣列,同時不會改變原陣列,最後新陣列中的元素是通過測試的原陣列的元素,也就是說要有測試規則,定義測試規則會想到map()方法也是這樣,就是給filter()傳入一個回撥函式而已嗎。說白了就是,針對非空陣列中的每一項,判斷一個是否通過測試規則,通過的話就新增到新陣列中。

根據上面的理解,先用自己的方法模仿下造個輪子唄!這裡測試規則為大於5的數

    //定義原始陣列
    var arr=[1,2,3,5,6,7]
    //定義過濾規則
    var rules=function(a){
        if(a>5){
            return true
        }else{
            return false
        }
    }
    function myfilter(array,rules) {
        if (array.length===0) {//判斷傳入的原陣列不能為空
            console.log("原陣列不能為空") 
        } 
else { let newArr=[] for (let index = 0; index < array.length; index++) { if(rules(arr[index])){ newArr.push(arr[index]) } } return newArr } } var myarr=myfilter(arr,rules) console.log(myarr)
//輸出[6,7]

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

引數一:一個回撥函式,和map方法的回撥函式一樣,改回調有三個引數,第一個當前元素的值,必填引數,後面兩個根據實際選填,分別代表當前袁術在原陣列中對應的索引和原始陣列 。

引數二:可選,物件作為該執行回撥時使用,傳遞給函式,用作this的值,如果省略了thisValue,this的值變為undefined

    • 使用

1.學會了filter()的使用,就可以直接使用es6中的輪子了,首先實現過濾出陣列中大於5的數

   var arr=[1,2,3,,5,6,7]
    var myarr=arr.filter(v=>v>5)
    console.log(myarr);//輸出[6,7]

2.通過filter判斷陣列中是否存在某個值

   var arr=[1,2,3,,5,6,7]
    console.log(arr.filter(v=>v==5).length==0?"不存在":"存在")//輸出存在

3.去掉空陣列空字串、undefined、null

    var arr=["",undefined,null,1,2,3]
    var myarr=arr.filter(v=>v)
    console.log(myarr)//輸出[1,2,3]

4.陣列去重

    var arr = [1, 2, 2, 3, 4, 5, 5,6,,7];
    var myarr = arr.filter((item, index,self)=>self.indexOf(item)===index) 
    console.log(myarr); //[1,2,3,4,5,6,7]

其他用法,比如實際開發中需要過濾掉返回list中某一項下面多個屬性按條件的篩選等等。。總之,filter的用法很多,關鍵在於工作學習中遇到的場景中如何去使用操作。

以上就是本文的全部內容,希望給讀者帶來些許的幫助和進步,方便的話點個關注,小白的成長之路會持續更新一些工作中常見的問題和技術點。