登录 ×

梨花寨前端技术交流平台!

html,css,js,html5,css3等

js中数组的filter的用法

2018-07-16 15:58:46 | 浏览量:85

1、在一个Array中,删掉偶数,只保留奇数:

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

直接返回处理后的新数组,不需要自己手动组装了。

2、把一个Array中的空字符串删掉:

var arr = ['A', '', 'B',null, undefined, 'C', ' ‘];
 var newArr = arr.filter(function(s) {
     returns && s.trim(); 
 });
 Console.log(newArr);//['A', 'B', 'C']

很方便地实现一个“筛选”函数。

3、回调函数

filter()接收的回调函数,其实可以有多个参数。通常我们仅使用第一个参数,表示Array的某个元素。回调函数还可以接收另外两个参数,表示元素的位置和数组本身:

var arr = ['A', 'B', 'C’];
var newer = arr.filter(function(element, index, self) {
  console.log(element);//依次打印'A', 'B', ‘C'
  console.log(index);//依次打印0, 1, 2
  console.log(self);//self就是变量arr
  return true;
 });

4、利用filter,可以巧妙地去除Array的重复元素:

 var newArr,arr = ['apple', 'strawberry', 'banana', 'pear', 'apple', 'orange', 'orange', 'strawberry’];
 newArr = arr.filter(function(element, index, self) {
     return self.indexOf(element) === index;
 });
console.log(r.toString()); 运行结果:// apple,strawberry,banana,pear,orange

去除重复元素依靠的是indexOf总是返回第一个元素的位置,后续的重复元素位置与indexOf返回的位置不相等,因此被filter滤掉了。这个很赞,实现的代码很简洁。

5、用filter()筛选出素数:


function get_primes(arr) {
    var i;
    return arr.filter(function (element) {
        var flag = true;
        if (element < 2) {
            flag = false;
        } else {
            for (var i = 2; i < element; i++) {
                if (element % i == 0) {
                    flag = false;
                    break;
                }
            }
        }
        return flag;
    });
}


测试代码:


var x, result, arr = [];
for (x = 1; x < 100; x++) {
    arr.push(x);
}
result = get_primes(arr);
if (result.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('测试失败: ' + result.toString());
}


需求及问题提交:

点击图片更换数字

0.6290s