您的位置:首页 > Web前端 > JavaScript

JavaScript的map/reduce/filter/sort 高阶函数

2017-09-02 09:33 369 查看
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<script type="text/javascript">

// 高阶函数讲解

//map 方法
var arr = [1,2,3,4,5];
var arr2 = arr.map(function(x){return x*10;});
console.log(arr2); //[10,20,30,40,50]
console.log(typeof arr2); //Object
//第二种写法
function foo(x){
return x*10;
}
var arr3 = arr.map(foo);
console.log(arr3);

// reduce 方法
var num = arr.reduce(function(x,y){return x+y;});
console.log(num); // 15
console.log(typeof num); // Number
// 同样第二种写法

// sort方法

var arr4 = [1,2,10,20];
arr4.sort();
console.log(arr4); // [1,10,2,20]
//这是因为sort方法默认先把所有元素转化为String再排序,所以10 在 2 的前面

function cmp(x,y){
if(x<y) return -1;
if(x>y) return 1;
if(x==y) return 0;
};

arr4.sort(cmp);
console.log(arr4);

// 比较字符串,忽略大小写
function cmp2(s1,s2){
x = s1.toUpperCase();
//x.toLowerCase();
y = s2.toUpperCase();
if(x<y) return -1;
if(x>y) return 1;
if(x==y) return 0;
}

var arr4 = ['Google', 'apple', 'Microsoft'];
arr4.sort(cmp2);
console.log(arr4);

var arr5 = ['a','b','g','c'];
arr5.sort();
console.log(arr5);

//友情提示: sort方法会直接对arr进行修改
//map reduce filter不会

// filter方法 去除偶数
arr6 =[1,2,3,4,5,6,7,8,9,10];
var arr7 = arr6.filter(function(x){return x%2 != 0});
console.log(arr7);

// 如何去除空字符串
arr8 = ['A','','','D',null,undefined];
function foo9(x){
return x && x.trim();
}
var arr9 = arr8.filter(foo9);
console.log(arr9); // A D

</script>
</body>
</html>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: