JavaScript篇:【前端必备】数组方法大全:从‘会写’到‘玩出花’,你掌握几个?

大家好,我是江城开朗的豌豆,一名拥有6年以上前端开发经验的工程师。我精通HTML、CSS、JavaScript等基础前端技术,并深入掌握Vue、React、Uniapp、Flutter等主流框架,能够高效解决各类前端开发问题。在我的技术栈中,除了常见的前端开发技术,我还擅长3D开发,熟练使用Three.js进行3D图形绘制,并在虚拟现实与数字孪生技术上积累了丰富的经验,特别是在虚幻引擎开发方面,有着深入的理解和实践。

我一直认为技术的不断探索和实践是进步的源泉,近年来,我深入研究大数据算法的应用与发展,尤其在数据可视化和交互体验方面,取得了显著的成果。我也注重与团队的合作,能够有效地推动项目的进展和优化开发流程。现在,我担任全栈工程师,拥有CSDN博客专家认证及阿里云专家博主称号,希望通过分享我的技术心得与经验,帮助更多人提升自己的技术水平,成为更优秀的开发者。

技术qq交流群:906392632

大家好,我是小杨,做了6年前端,今天想和大家聊聊JavaScript数组的那些方法。刚入行时,我只会用pushpop,后来被同事的代码秀了一脸------原来数组还能这么玩!今天就把这些年的经验总结成 "四阶用法" ,从基础到骚操作,包你看完直呼:"原来还能这样?!"


一、青铜段位:每天必用的"五虎将"

1. push/pop ------ 数组的"后门"

javascript 复制代码
const todoList = ['写博客', '改bug'];
todoList.push('摸鱼'); // ['写博客', '改bug', '摸鱼']
todoList.pop(); // 移除'摸鱼'

我的踩坑 :曾用push批量添加元素,结果参数没展开,整个数组成了嵌套结构:

javascript 复制代码
todoList.push(['开会', '加班']); // 错误示范!
// 正确姿势:todoList.push(...['开会', '加班']);

2. shift/unshift ------ 专治"头铁"

javascript 复制代码
const queue = ['用户A', '用户B'];
queue.unshift('VIP用户'); // 插队到头部
queue.shift(); // 移除'VIP用户'

3. slice ------ 安全切割(不伤原数组)

javascript 复制代码
const fruits = ['🍎', '🍌', '🍊'];
const myFruits = fruits.slice(1, 3); // ['🍌', '🍊'] 
// 原数组完好无损

二、白银段位:数据处理三剑客

1. map ------ 一对一变形

把用户ID数组转成用户对象:

javascript 复制代码
const userIds = [101, 102, 103];
const users = userIds.map(id => ({ id, name: `用户${id}` }));
// [{id:101,name:'用户101'}, ...]

2. filter ------ 渣男筛选器

剔除未完成的任务:

javascript 复制代码
const tasks = [
  { id: 1, done: true },
  { id: 2, done: false }
];
const doneTasks = tasks.filter(task => task.done);

3. reduce ------ 终极缝合怪

计算购物车总价(新手劝退警告⚠️):

javascript 复制代码
const cart = [
  { name: '键盘', price: 299 },
  { name: '鼠标', price: 199 }
];
const total = cart.reduce((sum, item) => sum + item.price, 0);
// 498

我的黑历史 :第一次用忘了加初始值0,遇到空数组直接报错!


三、黄金段位:高手专属骚操作

1. find/findIndex ------ 精准定位

找第一个吃螃蟹的人:

javascript 复制代码
const members = [
  { id: 1, role: 'admin' },
  { id: 2, role: 'user' }
];
const admin = members.find(m => m.role === 'admin');

2. some/every ------ 群体审判

检查是否有未成年:

javascript 复制代码
const ages = [18, 20, 17];
const hasChild = ages.some(age => age < 18); // true

3. flatMap ------ 二维打击

合并订单中的多件商品:

javascript 复制代码
const orders = [
  { items: ['🍔', '🍟'] },
  { items: ['🥤'] }
];
const allItems = orders.flatMap(order => order.items);
// ['🍔', '🍟', '🥤']

四、王者段位:冷门但炸裂的技巧

1. 用fill快速生成测试数据

javascript 复制代码
// 生成10个重复用户
const fakeUsers = Array(10).fill({ name: '测试用户' });

2. sort的坑与妙用

默认按字符串Unicode排序

javascript 复制代码
[10, 2, 1].sort(); // [1, 10, 2] 😱
// 正确姿势:
[10, 2, 1].sort((a, b) => a - b); // [1, 2, 10]

3. Array.from的隐藏玩法

生成1-100的数组:

javascript 复制代码
const nums = Array.from({ length: 100 }, (_, i) => i + 1);

五、总结:我的数组方法选择指南

场景 推荐方法
增删元素 push/pop/shift/unshift
数据转换 map/filter/reduce
查找元素 find/findIndex/includes
批量操作 forEach/some/every
复杂结构处理 flat/flatMap/Array.from

最后说句掏心话 :6年前我背API时总觉得"会用就行",直到看见同事用reduce一行代码搞定我20行的逻辑... 数组方法玩得6,真的能少写50%冗余代码!你还知道哪些神级用法?评论区掰头啊!

相关推荐
小李子呢021121 分钟前
前端八股2---Proxy 代理
前端·javascript·vue.js
bjzhang7542 分钟前
使用 HTML + JavaScript 实现组织架构图
前端·javascript·html·组织架构图
军军君011 小时前
Three.js基础功能学习十六:智能黑板实现实例三
前端·javascript·css·vue.js·3d·前端框架·threejs
海上彼尚1 小时前
SVG矢量图形快速入门
前端·html5
嗷o嗷o1 小时前
Android App Functions 深入理解
前端
qq_20815408851 小时前
瑞树6代流程分析
javascript·python
UXbot1 小时前
AI原型设计工具评测:从创意到交互式Demo,5款产品全面解析
前端·ui·设计模式·ai·ai编程·原型模式
落魄江湖行1 小时前
硅基同事埋的坑,我用2小时才填平:Nuxt 4 路由踩坑:可选参数 [[id]] 与 [id] 的区别
前端
一勺菠萝丶1 小时前
管理后台使用手册在线预览与首次登录引导弹窗实现
java·前端·数据库
军军君011 小时前
Three.js基础功能学习十四:智能黑板实现实例一
前端·javascript·css·typescript·前端框架·threejs·智能黑板