filter

filter也是一个常用的操作,它用于把Array的某些元素过滤掉,然后返回剩下的元素。

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

例如:

let arr = [1,2,4,5,6,9,10];
// 获取和
let sum = arr.reduce(function (x,y) {
    return x+y;
});
// 获取长度
let length = arr.length;
// 取得平均数
let average = sum / length;
// 保留大于平均数的数
let r = arr.filter(function (x) {
    return x > average;
});//[ 6, 9, 10 ]

把一个Array中的去空,可以这么写:

const array = ['a','','b','','c',null];
const notEmptyArray = array.filter(function (x) {
    return x && x.trim();
}); // [ 'a', 'b', 'c' ]

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

const repeatArray = [1,2,11,2,3,4,1];
let notRepeatArray = repeatArray.filter(function (x, index, self) {
    return self.indexOf(x) === index;
}); // [ 1, 2, 11, 3, 4 ]

筛选素数:

const randomArray = [];
for (let i = 1; i < 100; i++) {
    randomArray.push(i);
}

const primeArray = randomArray.filter(function (x) {
    let temp = [];
    for (let i = 1; i <= x; i++) {
        if (x % i === 0){
            temp.push(i);
        }
    }
    return temp.length === 2;
});

results matching ""

    No results matching ""