Day 1:手写数组方法 - 掌握数据处理的基石

🎯今日学习目标

  • 理解数组方法的核心设计思想

  • 掌握forEachmapfilterreduce、find、some、every、flat、flatMap的实现

  • 学会处理边界情况和异常

📚 前情:首先明白什么是数组?数组有哪些属性和特性?

  1. 数组是有序(顺序固定)的数据集合,通过数字索引来访问元素(从0开始);
  2. 核心属性:length、数字索引
  3. 特性:可以存储任意类型、长度自动更新
  4. js内置了很多常用的方法在数组的原型上

【第一步】 分析原生行为

javascript 复制代码
const arr = [1, 2, 3, 4, 5];

// forEach - 遍历执行,直接修改原数组
arr.forEach(el => console.log(el)); // 依次输出1 2 3 4 5

// map - 遍历执行,返回一个新数组
arr.map(el => el + 1); // [2, 3, 4, 5, 6]

// filter - 筛选出符合条件的元素,返回新数组
arr.filter(el => el > 3); // [4, 5]

// reduce - 累计计算并返回结果
arr.reduce((acc, cur) => acc + cur); // 15

// find - 找到第一个符合条件的元素,返回该元素
arr.find(el => el*2 === 6); // 3

// some - 检查至少有一个符合的元素,返回 true 或 false
arr.some(el => el === 5); // true

// every - 检查所有元素都符合,返回 true 或 false
arr.every(el => typeof(el) === 'number'); // true

// flat - 扁平化数组--可以传扁平化的层次(默认是1),返回一个新数组
[[arr]].flat(2); // [1, 2, 3, 4, 5]

// flatMap - 先map再执行flat(1),返回一个新数组
arr.flatMap(el => [el, el + 1]); // [1, 2, 2, 3, 3, 4, 4, 5, 5, 6]

【第二步】 注意边界条件

  1. 空数组
  2. 稀疏数组 ??包含空位的数组,空位没有索引但是会占用数组的长度
  3. 考虑其他数据类型(undefined、null、类对象)
  4. 错误捕获
  5. 注意this的流转

【第三步】 搭建基础框架

  1. 制定合理的方法名
  2. 确认每个方法的输入和输出

【第四步】 具体实现和测试

1. forEach

javascript 复制代码
1
相关推荐
李少兄4 分钟前
网页应用化部署指南:基于 Edge 浏览器创建桌面快捷方式
前端·edge
IT_陈寒4 分钟前
Python的异步陷阱:我竟然被await坑了一整天
前端·人工智能·后端
光影少年5 分钟前
Android和iOS原生开发的基础知识对RN开发的重要性,RN打包发布时原生端需要做哪些配置?
android·前端·react native·react.js·ios
Fanfffff7207 分钟前
从 6s 到 3s:一次电商前端性能优化实践的系统性总结
前端·性能优化
cypking9 分钟前
npm 依赖包版本扫描提示插件Version Lens
前端·npm·node.js
还是大剑师兰特10 分钟前
Vue3 Mixin 与 Vue2 Mixin 核心区别
前端·javascript·vue.js
188号安全攻城狮13 分钟前
【前端基础知识】JavaScript 数组方法总结:从表格速查到分类详解
开发语言·前端·javascript·网络安全
qq_3813385013 分钟前
微前端架构深度实践:从 qiankun 到 Module Federation 的企业级方案
前端·架构
鱼干~17 分钟前
【全栈知识点】全栈开发知识点
前端·人工智能·c#
英俊潇洒美少年18 分钟前
迷你 React 调度器(带优先级+时间切片)手写实现
前端·javascript·react.js