您现在的位置是:首页 > Javascript
当前栏目
前端面试 【JavaScript】— 什么是高阶函数?数组中的高阶函数有哪些?
2023-03-15 23:26:03 时间
何为高阶函数?一个函数就可以接收另一个函数作为参数或者返回值为一个函数,这种函数就称之为高阶函数。
数组中的高阶函数如下:
1. map 遍历
1. 对原来的数组没有影响;
2. 创建一个新数组,其结果是该数组中的每个元素都调用提供的函数后返回的结果;
3. 接收两个参数,一个是回调函数,一个是回调函数的this值(可选)。其中,回调函数被默认传入三个值,依次为当前元素、当前索引、整个数组。
let nums = [1, 2, 3];
let obj = { val: 5 };
let newNums = nums.map(function (item, index, array) {
return item + index + array[index] + this.val;
// 对第一个元素,1 + 0 + 1 + 5 = 7
// 对第二个元素,2 + 1 + 2 + 5 = 10
// 对第三个元素,3 + 2 + 3 + 5 = 13
}, obj);
console.log(newNums);
//[7, 10, 13]
当然,后面的参数都是可选的,不用的话可以省略。
2. reduce 缩减
1. 接收两个参数,一个为回调函数,另一个为初始值。回调函数中四个默认参数,依次为积累值、当前值、当前索引和整个数组。
let nums= [1, 2, 3];
// 多个数的加和
let newNums = nums.reduce(function(preSum,curVal,currentIndex,array) {
return preSum + curVal;
}, 0);
console.log(newNums);
//6
不传初始值会怎样?
不传默认值会自动以第一个元素为初始值,然后从第二个元素开始依次累计。
3. filter 过滤
1. 接收一个函数作为参数,这个函数有一个默认参数,就是当前元素。这个作为参数的函数返回值为一个布尔类型,决定当前元素是否保留;
2. 返回值为一个新的数组,这个数组里面包含参数里面所有被保留的项。
let nums= [1, 2, 3];
// 保留奇数项
let oddNums = nums.filter(item=>item%2);
console.log(oddNums);
// [1, 3]
4. sort 排序
1. 一个用于比较的函数,它有两个默认参数,分别是代表比较的两个元素。
let nums= [2, 3, 1];
nums.sort(function(a, b) {
if(a>b) {
return 1
}else if(a<b) {
return -1;
}else if(a==b){
return 0;
}
});
console.log(nums);
// [1, 2, 3]
当比较函数返回值大于0,则 a 在 b 的后面,即a的下标应该比b大。反之,则 a 在 b 的后面,即 a 的下标比 b 小。整个过程就完成了一次升序的排列。
当然还有一个需要注意的情况,就是比较函数不传的时候,是如何进行排序的?
答案是将数字转换为字符串,然后根据字母unicode值进行升序排序,也就是根据字符串的比较规则进行升序排序。
相关文章
- TiDB Binlog 组件正式开源
- 使用Visual Studio Code对Node.js进行断点调试
- 推荐!数据可视化的十种优秀JavaScript图表库
- Node.js在复杂集成场景下占据统治地位的五个理由
- 玩转Node.js单元测试
- Node.js中内存泄漏分析
- Angular对React:一场关于Web开发者支持率的史诗对决
- 热点推荐:什么是后端开发?
- 谈谈Spring boot 启动层面的开发
- 使用NodeJS将文件或图像上传到服务器
- 编写React组件的最佳实践
- JavaScript MV*框架最值得关注的七个亮点
- 前端开发指南:如何利用PHP Cake框架构建应用
- 基于React与Vue后,移动开源项目Weex如何定义未来
- NodeJS和C++之间的类型转换
- jQuery中的常用到的三十九个技巧
- 官宣|Google Developers中国网站发布!
- NodeJS和C++之间的类型转换
- .NET Core首例Office开源跨平台组件(NPOI Core)
- 如何写出漂亮的React组件