跳转到主内容
websoft网络软件专家 - 深耕网络技术,打造实用软件!

javascript数组有哪些方法_如何高效操作数据集合?

JavaScript数组核心方法分三类:不改原数组的slice、concat、map、filter、find、includes;改原数组的push、pop、unshift、shift、splice、fill;遍历聚合的forEach、some、every、reduce。 JavaScript 数组提供了丰富的方法来增删改查、遍历转换和聚合统计,掌握核心方法并理解其特点,是高效操作数据集合的关键。重点不在记全所有方法,而在用对场景——比如该用
map
就别用
for
循环手动推新数组,该用
find
就别写
filter()[0]
。 常用增删改查方法(不改变原数组) 这类方法返回新数组或值,安全、函数式友好,适合链式调用: slice(start, end) :截取子数组,不修改原数组(
[1,2,3].slice(1)
→
[2,3]
) concat(...arrays) :合并数组,返回新数组(
[1].concat([2],[3])
→
[1,2,3]
) map(fn) :逐项转换,返回等长新数组(
[1,2,3].map(x => x * 2)
→
[2,4,6]
) filter(fn) :筛选符合条件的项,返回新数组(
[1,2,3].filter(x => x > 1)
→
[2,3]
) find(fn) :返回第一个匹配项(
[{id:1},{id:2}].find(x => x.id === 2)
→
{id:2}
) includes(value) :判断是否存在某值,返回布尔值(
[1,2,3].includes(2)
→
true
) 常用增删改查方法(直接修改原数组) 这些方法会改变原始数组,适合明确需要副作用的场景,但要注意避免意外污染: push(...items) :末尾添加,返回新长度(
arr.push(4)
) pop() :删除末尾项,返回被删元素 unshift(...items) :开头添加,性能略差(因需移动所有索引) shift() :删除开头项,同样有移动开销 splice(start, deleteCount, ...items) :万能修改法,可删、可替、可插(
[1,2,3].splice(1,1,'a')
→ 原数组变为
[1,'a',3]
) fill(value, start, end) :批量填充指定范围(
[0,0,0].fill(1,1,2)
→
[0,1,0]
) 遍历与聚合:选对方法,少写循环 避免无脑
for
或
for...of
,优先用语义清晰的高阶方法: Eclipse导入Android或其他的JAVA项目的正确方法 WORD版 本文档主要讲述的是Eclipse导入Android或其他的JAVA项目的正确方法;希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看 下载 立即学习 “ Java免费学习笔记(深入) ”; forEach(fn) :仅遍历,无返回值(适合打日志、发请求等副作用) some(fn) :只要一个满足就返回
true
(
[1,2,3].some(x => x > 2)
→
true
) every(fn) :全部满足才返回
true
(
['a','b'].every(x => typeof x === 'string')
→
true
) reduce(fn, init) :累计计算,灵活强大(求和:
[1,2,3].reduce((a,b) => a+b, 0)
;分组:
arr.reduce((g,x) => {g[x.type] = g[x.type] || []; g[x.type].push(x); return g;}, {})
) 实用技巧与避坑提醒 高效操作不只是“用什么方法”,更在于怎么组合、怎么避免常见陷阱: 用扩展运算符
[...arr]
快速浅拷贝,比
arr.slice()
更直观
flat(depth)
处理嵌套数组(
[1,[2,3],[[4]]].flat(2)
→
[1,2,3,4]
),避免手写递归
flatMap(fn)
=
map
+
flat(1)
,一步到位(
['a b','c d'].flatMap(s => s.split(' '))
→
['a','b','c','d']
) 注意
indexOf
/
lastIndexOf
只支持严格相等,对象查找要用
findIndex
大数组慎用
unshift
/
shift
和
splice
开头操作,时间复杂度 O(n) 基本上就这些。熟练组合
map
、
filter
、
reduce
和扩展运算符,90% 的日常数据处理都能写得简洁又健壮。不复杂但容易忽略——关键是理解每个方法的“意图”和“副作用”。

相关文章