My Book

filter()

fliter()方法是创建一个新的数组,新数组中元素是通过检查指定数组中符合条的所有元素

注意:filter()不会对空数组检测----同样不会改变原来的数组

    currentValue       必须。当前元素的值
    index              可选。当期元素的索引值
    arr                可选。当期元素属于的数组对象

和map()不同的是,filter()把传入的函数依次作用于每个元素,然后根据返回值是true还是false来决定保留还是丢弃该元素

实例:

    删掉偶数,只保留奇数

    var arr = [5,6,8,4,2,9,45];
    var b = arr.filter(function(value){
        return value%2!== 0;
    })
    ------[5,9,45]



    把一个arr数组的空字符串删掉
    var arr = ['A', '', 'B', null, undefined, 'C', '  '];
    var b = arr.filter(function(value){
        return value&&value.trim();
    })
    ------['A', 'B', 'C']


    去掉arr的重复元素
    var arr = ['apple', 'strawberry', 'banana', 'pear', 'apple', 'orange', 'orange'];
    var b = arr.filter(function(value,index,self){
        return self.indexOf(value)===index;
    })


    筛选出素数
     3 function get_primes(arr) {
     4     var i;
     5     return arr.filter(function (element) {
     6             var flag=true;
     7             if(element<2){
     8             flag=false;
     9         }else {
    10             for(var i=2;i<element;i++){
    11                 if (element%i==0){
    12                     flag=false;
    13                     break;
    14                 }
    15             }
    16         }
    17         return flag;
    18     });
    19 }
    20
    21 // 测试:
    22 var
    23     x,
    24     r,
    25     arr = [];
    26 for (x = 1; x < 100; x++) {
    27     arr.push(x);
    28 }
    29 r = get_primes(arr);