JavaScript高阶函数(filter/sort)
2017-07-26 本文已影响258人
SpiffyEight77
![](https://img.haomeiwen.com/i3452105/93c08b6354dd9600.png)
JavaScript高阶函数(filter/sort)
filter()
- filter() 方法创建一个新数组, 其包含通过所提供函数实现的测试的所有元素
- filter()方法用于把Array的某些元素过滤掉,然后返回剩下的元素
- filter()把传入的函数依次作用于每个元素,然后根据返回值是true还是false决定保留还是丢弃该元素
- filter()跟map()很相似也是接收一个参数,但是不同的是filter()把传入的函数依次作用于每个元素,然后根据返回值是true还是false决定保留还是丢弃该元素
过滤掉数组中的奇数
'use strict'
var arr = [1,2,3,4,5,6,7,8,9,10]; //过滤掉数组中的奇数
var result = arr.filter(function (x) {
return x % 2 == 0;
});
console.log(result);
过滤掉数组中的素数
var arr = [2,3,5,7,9,16,25,23,31,7,8];
var r = arr.filter(function(x) {
for(var i = 2; i <= Math.sqrt(x); i++)
return x % i == 0;
});
console.log(r);
过滤掉数组中的空字符串
var arr = ['A','B',' ','D',null,undefined,'E'];
var r = arr.filter(function(x) {
return x && x.trim();
});
console.log(r);
筛选出素数
var arr = [2,1,2,3,5,7,9,16,25,23,31,7,8];
var r = arr.filter(function(x) {
var f = true;
if(x == 1)
return false;
for(var i = 2; i <= Math.sqrt(x); i++)
if(x % i == 0)
{
f = false;
break;
}
return f == true;
});
console.log(r);
去除数组重复元素
var arr = ['a','a','a','b','b','c',1,2,1,4,2];
var r = arr.filter(function(x,p,s) {
return s.indexOf(x) == p; //indexOf每次返回元素在数组中第一次出现的位置
});
console.log(r);
sort()
- JavaScript的sort()方法是根据ASCII码来进行排序
与其他语言的sort()方法比较确实是够奇葩的 - 根据两个元素比较返回的值进行排序
如果认为x < y,则返回-1,如果认为x == y,则返回0,如果认为x > y,则返回1
升序输出数字
var arr = [1,6,1,2,3,4,631,23,13,12436,7,51,31,1,23,123,123,1];
arr.sort(function (x,y) {
return x - y;
});
console.log(arr);
降序输出数字
var arr = [1,6,1,2,3,4,631,23,13,12436,7,51,31,1,23,123,123,1];
arr.sort(function (x,y) {
return y - x;
});
console.log(arr);
字典序输出字符串
var arr = ['apple','das','hrtjtyj','das','adsfreger','grhtrjtyj'];
console.log(arr.sort());
逆字典序输出字符串
var arr = ['apple','das','hrtjtyj','das','adsfreger','grhtrjtyj'];
console.log(arr.sort().reverse());