发布时间:2026/6/20 2:59:03
【前端手撕】数组api
碎碎念校内任务告一段落暂时mapmap映射—— 将原数组的每个元素映射成一个新值组成新数组返回。Array.prototype.map function(fn) { const res [] for (let i 0; i this.length; i) { res.push(fn(this[i], i,this)) } return res }1. 使用map是arr.map这样用所以this指向的是arr2. fn有三个参数是因为JavaScript 官方规定Array.prototype.map的回调函数必须接收这 3 个参数按顺序currentValue当前元素的值 → 对应this[i]index当前元素的索引 → 对应iarray调用 map 的原数组 → 对应this后续调用的时候传参可以只传部分但底层map仍然是塞了三个实参只不过fn只接收部分忽略了其他。Tip几乎所有数组方法的回调函数都是传这三个参数方法是否传 3 个参数备注forEach✅ 是只遍历不返回新数组map✅ 是返回新数组filter✅ 是返回新数组筛选some/every✅ 是返回布尔值测试是否通过find/findIndex✅ 是查找元素或索引reduce❌特殊回调是(累加器, 当前值, 索引, 数组)4 个参数因为多了一个累加器filterfilter()是 JavaScript 数组原型上的一个内置方法。它的核心功能是根据指定条件回调函数从原数组中筛选出符合要求的元素并组成一个新数组返回。即不破坏原数组。Array.prototype.filter function(fn) { const res [] for (let i 0; i this.length; i) { // 如果fn返回true即满足条件则把当前元素加到res数组中 if (fn(this[i], i, this)) { res.push(this[i]) } } return res }reducereduce方法通过维护一个持续传递的累加器即上一次回调的返回值res将数组中的每个元素依次进行归并操作最终将整个数组坍缩归约为一个单一的结果值可以是数字、对象或数组等。Array.prototype.reduce function(fn, initValue) { let res, start 0 if (arguments.length ! 1) { // 传了两个参数有初始值 res initValue } else { // 只传了一个参数从第一个元素开始 res this[0] start 1 } for (let i start; i this.length; i) { // fn 执行完后返回一个新值覆盖掉 res继续下一次循环。 res fn(res, this[i], i, this) } return res }Tip1. 边界问题处理如果数组是空的并且用户没有传初始值按照这段代码res this[0]会变成undefinedstart 1循环不执行最后返回undefined。但真实的 JS 引擎在这种情况下会直接报错TypeError: Reduce of empty array with no initial value。因此可以在开头加一句if (this.length 0 arguments.length 1) { throw new TypeError(Reduce of empty array with no initial value); }2. 为什么用arguments.length来判断是否有初始值而不是直接用if (initValue undefined)因为undefined是合法的初始值。例如[1, 2].reduce(fn, undefined);如果用initValue undefined判断会误以为没传初始值导致程序逻辑错乱。如果用arguments.length 2判断就能精准识别“用户确实传了第二个参数只是值恰好是undefined”从而正确地把res设为undefined。

相关新闻

MC68HC908GR8/GR4 Flash与中断系统深度解析与避坑指南
2026/6/20 2:59:03

MC68HC908GR8/GR4 Flash与中断系统深度解析与避坑指南

1. 项目概述与核心价值在嵌入式开发的江湖里,MC68HC908GR8/GR4这类经典的8位微控制器(MCU)至今仍在许多对成本敏感、对可靠性要求严苛的领域里扮演着关键角色。我接触过不少老项目,从工厂产线的工控板到家里的老式家电&#xff0c…

阅读更多
您的游戏存档真的安全吗?Ludusavi 用智能备份守护您的游戏记忆
2026/6/20 2:59:03

您的游戏存档真的安全吗?Ludusavi 用智能备份守护您的游戏记忆

您的游戏存档真的安全吗?Ludusavi 用智能备份守护您的游戏记忆 【免费下载链接】ludusavi Backup tool for PC game saves 项目地址: https://gitcode.com/gh_mirrors/lu/ludusavi 在数字游戏时代,我们的游戏存档承载着无数小时的奋斗与回忆。然而…

阅读更多
【运筹学】线性规划标准形式转化实战:从复杂约束到标准模型的完整推演
2026/6/20 2:59:03

【运筹学】线性规划标准形式转化实战:从复杂约束到标准模型的完整推演

1. 线性规划标准形式的核心逻辑 第一次接触线性规划标准形式时,我盯着那堆数学符号发懵——为什么非要折腾成统一格式?直到用Python实现单纯形法时才恍然大悟:标准形式是算法能"读懂"的通用语言。就像炒菜前要把食材切配成标准形状…

阅读更多
Sigstore实战指南:无密钥签名与透明日志验证在软件供应链安全中的应用
2026/6/20 3:59:03

Sigstore实战指南:无密钥签名与透明日志验证在软件供应链安全中的应用

1. 项目概述:为什么Sigstore是开发者的“安全必需品”?如果你是一名开发者,尤其是负责CI/CD流水线、容器镜像发布或者开源软件维护的,那么“签名”和“验证”这两个词一定让你又爱又恨。爱的是,它们是软件供应链安全的…

阅读更多
深入解析MC68HC05PV8 EEPROM:从寄存器操作到硬件保护与可靠性设计
2026/6/20 3:59:03

深入解析MC68HC05PV8 EEPROM:从寄存器操作到硬件保护与可靠性设计

1. 项目概述如果你在嵌入式开发中用过MC68HC05系列单片机,尤其是PV8这个型号,那你大概率接触过它内置的EEPROM。这玩意儿看着简单,不就是个能掉电保存又能在线改写的存储器嘛,但真到用的时候,特别是涉及到数据保护和批…

阅读更多
RAMP技术:基于强化学习的自适应混合精度量化解析
2026/6/20 3:59:03

RAMP技术:基于强化学习的自适应混合精度量化解析

1. RAMP技术解析:基于强化学习的自适应混合精度量化在大型语言模型(LLM)部署过程中,内存墙(Memory Wall)问题日益突出。以Llama-2-13B为例,FP16格式需要约26GB内存,远超消费级GPU的显…

阅读更多
AI 引爆内存危机,苹果即将离任 CEO 称产品涨价“不可避免”
2026/6/20 3:59:03

AI 引爆内存危机,苹果即将离任 CEO 称产品涨价“不可避免”

AI 引发内存芯片价格暴涨,苹果面临定价困局苹果公司即将离任的 CEO 蒂姆库克在接受采访时表示,苹果产品价格上涨已“不可避免”,当前局面“不可持续”。他将 AI 引爆的内存芯片价格暴涨形容为“百年一遇的洪水”,这是他在苹果三十…

阅读更多
Java国密开发实战:Spring Boot集成SM2/SM3/SM4算法指南
2026/6/20 3:59:03

Java国密开发实战:Spring Boot集成SM2/SM3/SM4算法指南

1. 项目概述:为什么你需要关注Java国密开发?如果你是一名Java开发者,最近在对接政府项目、金融系统,或者处理涉及敏感数据的业务,那么“国密”这个词大概率已经频繁出现在你的需求文档和会议纪要里了。它不是某个新潮的…

阅读更多
【前端手撕】数组api
2026/6/20 2:59:03

【前端手撕】数组api

碎碎念校内任务告一段落&#xff01;&#xff08;暂时mapmap&#xff1a;映射 —— 将原数组的每个元素映射成一个新值&#xff0c;组成新数组返回。Array.prototype.map function(fn) {const res []for (let i 0; i < this.length; i) {res.push(fn(this[i], i,this))}r…

阅读更多
别再只用BERT了!用Transformers库的AutoModel,5分钟搞定文本相似度计算(附代码对比)
2026/6/17 23:21:18

别再只用BERT了!用Transformers库的AutoModel,5分钟搞定文本相似度计算(附代码对比)

超越BERT&#xff1a;用Transformers库高效实现文本相似度计算的三种实战方案在自然语言处理领域&#xff0c;文本相似度计算是信息检索、问答系统和推荐系统等应用的核心技术。传统方法如TF-IDF或Word2Vec已逐渐被基于Transformer的预训练模型所取代。Hugging Face的Transform…

阅读更多
Prompt Engineering:重构人机协作的工程化方法论
2026/6/18 4:35:02

Prompt Engineering:重构人机协作的工程化方法论

1. 项目概述&#xff1a;这不是“写提示词”&#xff0c;而是重构人机协作的底层逻辑“Prompt Engineering”这个词&#xff0c;这两年被讲得太多&#xff0c;也太轻飘。很多人把它理解成“给AI发指令的技巧”&#xff0c;甚至简化为“多加几个形容词”“换种说法再试一次”。我…

阅读更多
Anthropic提示层归零:模型即协议的工程实践
2026/6/18 15:04:04

Anthropic提示层归零:模型即协议的工程实践

1. 项目概述&#xff1a;这不是一次普通更新&#xff0c;而是一次架构级“蒸发”“Anthropic Just Shipped the Layer That’s Already Going to Zero”——这个标题一出来&#xff0c;我正在调试一个Claude调用链的终端前停了三秒。不是因为震惊&#xff0c;而是因为熟悉&…

阅读更多
洛雪音乐终极音源指南:一站式获取全网无损音乐的完整解决方案
2026/6/20 0:59:03

洛雪音乐终极音源指南:一站式获取全网无损音乐的完整解决方案

洛雪音乐终极音源指南&#xff1a;一站式获取全网无损音乐的完整解决方案 【免费下载链接】lxmusic- lxmusic(洛雪音乐)全网最新最全音源 项目地址: https://gitcode.com/gh_mirrors/lx/lxmusic- 你是否厌倦了在不同音乐平台之间来回切换&#xff0c;只为找到一首歌的无…

阅读更多
Display Driver Uninstaller深度清理方案:显卡驱动残留问题的终极解决方案(2024版)
2026/6/20 0:59:03

Display Driver Uninstaller深度清理方案:显卡驱动残留问题的终极解决方案(2024版)

Display Driver Uninstaller深度清理方案&#xff1a;显卡驱动残留问题的终极解决方案&#xff08;2024版&#xff09; 【免费下载链接】display-drivers-uninstaller Display Driver Uninstaller (DDU) a driver removal utility / cleaner utility 项目地址: https://gitco…

阅读更多
深入解析MC68HC908AS32A的SCI模块:从异步通信原理到寄存器实战配置
2026/6/20 0:59:03

深入解析MC68HC908AS32A的SCI模块:从异步通信原理到寄存器实战配置

1. 项目概述&#xff1a;深入MC68HC908AS32A的异步串行通信核心在嵌入式系统开发中&#xff0c;尤其是面对工业控制、车载电子或智能仪表这类需要设备间稳定对话的场景&#xff0c;串行通信接口&#xff08;SCI&#xff09;往往是工程师最可靠的老朋友。它不像并行总线那样需要…

阅读更多
GIT修改用户名
2026/6/20 3:11:17

GIT修改用户名

在GIT中修改用户名可按以下步骤操作&#xff1a; 查看当前git的用户名&#xff0c;使用命令git config --list或git config user.name。修改git用户名&#xff0c;使用命令git config --global user.name "xxx&#xff08;新的用户名&#xff09;"&#xff0c;将其中…

阅读更多
Win11Debloat:让你的Windows系统重获新生的终极优化工具
2026/6/19 20:40:12

Win11Debloat:让你的Windows系统重获新生的终极优化工具

Win11Debloat&#xff1a;让你的Windows系统重获新生的终极优化工具 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter and …

阅读更多
技术深度解析:m4s-converter实现原理与B站缓存视频转换最佳实践
2026/6/18 15:23:49

技术深度解析:m4s-converter实现原理与B站缓存视频转换最佳实践

技术深度解析&#xff1a;m4s-converter实现原理与B站缓存视频转换最佳实践 【免费下载链接】m4s-converter 一个跨平台小工具&#xff0c;将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter m4s-converter是一个…

阅读更多