js filter巧妙去除array元素

用filter去除array中重复的元素,以及筛选出素数

先放代码(array中重复元素):

1
2
3
4
5
6
var
r,
arr = ['one', 'two','three','two'];
r = arr.filter(function(element, index, self) {
return self.indexOf(element) == index;
});

去除重复元素依靠的是indexOf总是返回第一个元素的位置,后续的重复元素位置与indexOf返回的位置不相等,因此被filter过滤掉了

filter怎么过滤素数,第一眼我也是有些懵逼的,看了网上大神的代码才搞懂的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
function get_primes(arr) {
var primeArr = arr.filter(function(x) {
if (x <=1 ) {
return false;
}//保证x是大于一的自然数
for(var i = 2; i < Math.sqrt(x); i++ ) {
if(x % i === 0) {
return false;
}
}//看其他数是不是素数
return ture;
})
return primeArr;
}