JavaScript中的高阶函数
JavaScript 函数 高阶
2023-09-11 14:21:35 时间
1、map/reduce
map就是把一个相同的操作,作用到一个数组上
'use strict'; function pow(x) { return x * x; }
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
var results = arr.map(pow); // [1, 4, 9, 16, 25, 36, 49, 64, 81]
console.log(results);
注意:map()
传入的参数是pow
,即函数对象本身。
reduce:Array的reduce()
把一个函数作用在这个Array
的[x1, x2, x3...]
上,这个函数必须接收两个参数,reduce()
把结果继续和序列的下一个元素做累积计算
[x1, x2, x3, x4].reduce(f) = f(f(f(x1, x2), x3), x4)
例如求和,求积
2、filter
filter也是一个常用的操作,它用于把Array
的某些元素过滤掉,然后返回剩下的元素。
和map()
类似,Array
的filter()
也接收一个函数。和map()
不同的是,filter()
把传入的函数依次作用于每个元素,然后根据返回值是true
还是false
决定保留还是丢弃该元素。
var arr = [1, 2, 4, 5, 6, 9, 10, 15]; var r = arr.filter(function (x) { return x % 2 !== 0; }); r; // [1, 5, 9, 15]
filter()
接收的回调函数,其实可以有多个参数。通常我们仅使用第一个参数,表示Array
的某个元素。回调函数还可以接收另外两个参数,表示元素的位置和数组本身
var arr = ['A', 'B', 'C']; var r = arr.filter(function (element, index, self) { console.log(element); // 依次打印'A', 'B', 'C' console.log(index); // 依次打印0, 1, 2 console.log(self); // self就是变量arr return true; });
用于数组元素去重
'use strict';
var r, arr = ['apple', 'strawberry', 'banana', 'pear', 'apple', 'orange', 'orange', 'strawberry'];
r = arr.filter(function (element, index, self) {
return self.indexOf(element) === index;
});
去除重复元素依靠的是indexOf
总是返回第一个元素的位置,后续的重复元素位置与indexOf
返回的位置不相等,因此被filter
滤掉了。
3、sort
sort()
方法也是一个高阶函数,它还可以接收一个比较函数来实现自定义的排序
'use strict'; var arr = [10, 20, 1, 2];
arr.sort(function (x, y) {
if (x < y) {
return -1;
}
if (x > y) {
return 1;
}
return 0;
});
console.log(arr); // [1, 2, 10, 20]
相关文章
- JavaScript图形实例:正弦曲线
- javascript的闭包
- 第七节:语法总结(1)(自动属性、out参数、对象初始化器、var和dynamic等) 图片放大镜 JavaScript-基础 用javascript写原生ajax(笔记) 初遇 Asp.net MVC 数据库依赖缓存那些事儿 前端JS 与 后台C# 之间JSON序列化与反序列化(笔记)
- 【学习笔记15】JavaScript的函数
- 12Vue - 模板语法(插值-使用JavaScript表达式)
- JavaScript中的字符串乘法
- JavaScript中函数的防抖与节流
- javascript 打印错误信息 catch err
- 【JavaScript】javascript常用的东西
- 一篇文章把你带入到JavaScript中的闭包与高级函数
- Javascript 笔记与总结(1-6)Javascript 面向对象
- 《jQuery与JavaScript入门经典》——1.3 小结
- 《HTML5+JavaScript动画基础》——导读
- 深入理解JavaScript函数
- 2015第37周五javascript函数arguments对象巧用一
- iOS开发之Objective-C与JavaScript的交互
- 浅析JavaScript中的嵌套函数如何实现优雅地跳出外部函数
- 华为OD机试 - 数组编写函数(JavaScript) | 机试题+算法思路+考点+代码解析 【2023】
- 华为OD机试 - 新工号系统(JavaScript) | 机试题+算法思路+考点+代码解析 【2023】
- kettle中使用javascript步骤和fireToDB函数实现自己定义数据库查询
- 深入理解JavaScript系列(2):揭秘命名函数表达式
- JavaScript中匿名函数this指向问题
- JavaScript高级程序设计学习笔记--基本概念
- HTML 一种重定向方法 / JavaScript 两种重定向方法