首页 > 技术文章 > js 自带的 filter()方法

rocky-fang 2016-08-10 16:01 原文

1. 方法概述

   它用于把Array的某些元素过滤掉,然后返回剩下的元素组成的数组。

 

2. 例子

   2.1 尝试用filter()筛选出素数:

'use strict';

function get_primes(arr) {

var result = [];
result = arr.filter(function(n){
       var flag = false;     
       if(n>1){
            flag = true;
            for(var i=2; i<n; i++){
                if(n%i===0){
                       flag = false;
                       break;
                }
                  
             }
             
        }
        return flag;
 
 });
  return result;
}

// 测试:
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()) {
    alert('测试通过!');
} else {
    alert('测试失败: ' + r.toString());
}

 

 2.2  过滤json中无效的entries

var arr = [
  { id: 15 },
  { id: -1 },
  { id: 0 },
  { id: 3 },
  { id: 12.2 },
  { },
  { id: null },
  { id: NaN },
  { id: 'undefined' }
];

var invalidEntries = 0;

function filterByID(obj) {
  if ('id' in obj && typeof(obj.id) === 'number' && !isNaN(obj.id)) {
    return true;
  } else {
    invalidEntries++;
    return false;
  }
}

var arrByID = arr.filter(filterByID);

console.log('Filtered Array\n', arrByID); 
// Filtered Array
// [{ id: 15 }, { id: -1 }, { id: 0 }, { id: 3 }, { id: 12.2 }]

console.log('Number of Invalid Entries = ', invalidEntries); 
// Number of Invalid Entries = 4

 

推荐阅读