js筆記--高階函數filter()

filter()能夠把array中的元素過濾掉,返回剩下的元素javascript

實現機制:和map()相似,Arrayfilter()也接收一個函數。java

map()不一樣的是,filter()把傳入的函數依次做用於每一個元素,而後根據返回值是true保留false丟棄該元素。數組

 

練習題目:app

  (1)在一個Array中,刪掉偶數,只保留奇數函數

    答:測試

      var arr = [1, 2, 4, 5, 6, 9, 10, 15];       var r = arr.filter(function (x) {       return x % 2 !== 0;       });       r; // [1, 5, 9, 15]

  (2)把一個Array中的空字符串刪掉網站

    答: spa

回調函數
    接收的回調函數,能夠有多個參數,第一個參數表示的某個元素,第二個參數表示元素的位置,第三個參數表示數組自己
    去除的重複元素:
    答:      var arr = ['A', '', 'B', null, undefined, 'C', ' '];       var r = arr.filter(function (s) {        return s && s.trim(); // 注意:IE9如下的版本沒有trim()方法       });       r; // ['A', 'B', 'C']

  (3)
filter()ArrayArray
     var r,
         arr = ['apple', 'strawberry', 'banana', 'pear', 'apple', 'orange', 'orange', 'strawberry'];

      r = arr.filter(function (element, index, self) {
      return self.indexOf(element) === index;
      });code

      去除重複元素依靠的是indexOf老是返回第一個元素的位置,後續的重複元素位置與indexOf返回的位置不相等,所以被filter濾掉了。ip

  (4)用filter()篩選出素數

    答:

      function get_primes(arr) {          var sushu = arr.filter( function(x){           if(x==1){               return false;           }           if(x==2){               return true;           }           for(var i = 2 ; i < x ; i++){               if(x % i === 0){                   return false;               }           }           return true;       });       return sushu;    }    var x, r, arr = [];    for (x = 1; x < 100; x++) {        arr.push(x);    }    r = get_primes(arr);    if (r.toString() === [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97].toString()) {        console.log('測試經過!');    } else {        console.log('測試失敗: ' + r.toString());    }參考廖雪峯老師的官方網站
相關文章
相關標籤/搜索