暑期前端训练day3

发布于:2025-07-04 ⋅ 阅读:(17) ⋅ 点赞:(0)

js/ts 高阶函数复习

常见的高阶函数一般有以下几个:map、filter、forEach、reduce、sort、some、every、find、findIndex,并且都是针对数组的。

高阶函数:

高阶函数的注意事项:
(1) 都是数组内的方法
(2) 性能问题,比传统的for稍慢。
(3) 内部回调的this的绑定不确定,需要自己显式绑定。

(1) reduce函数

本质就是一个累加器,可以帮助我们实现一种“累加”操作。

const arr = [1, 2, 3, 4]
 
const su = arr.reduce((pre, cur, index, arr) => {
	return pre + cur 
}, 0)  

// su = 10 

上述操作实现了最简单的一种用法,现在我们通过这个来描述一下每个参数,Array.Prototype.reduce(callback, 初始值),初始值肯定是最先定义的,callback的参数为:
pre: 上一次执行回调函数的结果, 如果是第一次就使用初始值。
cur: 当前索引到的值。
index: 当前的索引
arr: 数组对象
最后一次执行回调的结果就是返回值。

还要一个复杂的场景,需要用到其他的回调进行链式调用,可以看看最终输出什么。

const obj = {name: "cjy", age: 18, handsome: true, 
	strong: true 
} 
const newObj = Object.keys(obj).filter((key, idx, arr) => { 
	if(key !== 'handsome'  || key !== 'strong') return false 
	return true 
}).reduce((preObj, key, idx, arr) => {
	return {
		...preObj, 
		[key]: obj[key]
	}
}, {}) 
(2) sort函数

这个函数很有意思,对于c/c++的sort的回调,例如:

#include<bits/stdc++.h> 
using namespace std; 

int main() {
	int q[] = {3, 2, 4, 1, 5}; 
	
	sort(q, q + 5, 
		[](int x, int y) => {
			// true的排在前,false排在后
			return x < y // x > y 
		}
	)
	return 0;
}

但是js的:

let arr = [3, 5, 4, 1, 2] 
arr.sort((a, b) => {
	// 当是返回负数的时候,a在b前。
	// 否则额a在b后。
	// 为0位置不变。
	// 并且排序具有稳定性。
	return a - b  
}) 

个人觉得最难的就是这几个了,其他的就是依葫芦画瓢,可以举一反三。


网站公告

今日签到

点亮在社区的每一天
去签到