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());    }参考廖雪峰老师的官方网站
相关文章
相关标签/搜索