JavaScript 常用的高阶函数

前言:

  • 高阶函数(Higher-Order Function)就是操作其他函数的函数


一、map()

按照同一规则 改变数组内的每个值

	function pow(x) {
    	return x * x;
	}
	var arr = [1, 2, 3, 4];
	var results = arr.map(pow); // [1, 4, 9, 16]
	results = results.map(String); // ['1', '4', '9', '16',]

二、reduce()

对数组中的每个元素执行一个由您提供的reducer函数(升序执行)
将其结果汇总为单个返回值

	var arr = [1, 3, 5, 7, 9];
	var sum = arr.reduce(function (x, y) {
    	return x + y;
	}); // 25
	var integer = arr.reduce(function (x, y) {
    	return x * 10 + y;
	}); // 13579

三、filter()

过滤掉数组中的某些元素,然后返回剩下的元素
返回值是true还是false决定了保留还是丢弃该元素

	var arr = [1, 2, 4, 5, 6, 9, 10, 15];
	var r = arr.filter(function (x) {
    	return x % 2 !== 0;
	}); // [1, 5, 9 ,15]
	
	// 回调函数
	var arr = ['A', 'B', 'C'];
	var r = arr.filter(function (element, index, self) {
    	console.log(element); // 依次打印 Value 值 'A', 'B', 'C'
	    console.log(index); // 依此打印 Key 值 0, 1, 2
    	console.log(self); // self 就是变量 arr
	    return true;
	});
	
	// 用回调函数去掉 Array 重复元素, indexOf 总是返回第一个元素的位置
	var m,
    	arr = ['apple', 'strawberry', 'banana', 'pear', 'apple'];
	m = arr.filter(function (element, index, self) {
    	return self.indexOf(element) === index;
	}); // ['apple', 'strawberry', 'banana', 'pear'];

四、sort()

该函数用来排序

	['Google', 'Apple', 'Microsoft'].sort(); 
	// ['Apple', 'Google', 'Microsoft']
	
	// 字符串根据ASCII码进行排序
	// 而小写a的ASCII码在大写字幕之后
	['Google', 'apple', 'Microsoft'].sort(); 
	// ['Google', 'Microsoft', 'apple']
	
	// sort() 方法默认把所有元素先转换为String再排序
	// 结果 '10' 排在了 '2' 的前面
	// 因为字符 '1' 比字符 '2' 的 ASCII 码小
	[10, 20, 1, 2].sort(); // [1, 10, 2, 20]
	// sort() 还可以接收一个比较函数来实现自定义的排序
	// 数字大小排序
	var arr = [10, 20, 1, 2];
	arr.sort(function (x, y) {
    	if (x < y)
	        return -1;
	    if (x > y)
	        return 1;
	    return 0;
	}); // arr的值变为 [1, 2, 10, 20]
	// 字符串排序
	var arr = ['Google', 'apple', 'Microsoft'];
	arr.sort(function (s1, s2) {
	    var x1 = s1.toUpperCase();
	    var x2 = s2.toUpperCase();
	    if (x1 < x2)
	        return -1;
	    if (x1 > x2)
	        return 1;
	    return 0;
	}); // ['apple', 'Google', 'Microsoft'];
	// 数组比较
	var a1 = ['B', 'A', 'C'];
	var a2 = al.sort();
	a1; // ['A', 'B', 'C']
	a2; // ['A', 'B', 'C']
	a1 === a2; // true, a1 和 a2 是同一个对象


参考文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值