Array.prototype.findLast 是 ES2023 引入的从数组末尾向开头查找首个满足条件元素的方法,匹配即返回该元素,否则返回 undefined;参数为回调函数,接收 element、index、array,需返回布尔值;Chrome 108+、Firefox 107+、Safari 16.4+ 及 Node.js v18.12+ 支持。

Array.prototype.findLast 是 ES2023 引入的方法,专门用于从数组末尾(右向左)查找第一个满足条件的元素,找到即返回该元素;没找到则返回 undefined。
基本用法和参数说明
它接收一个回调函数作为参数,该函数会依次对数组从最后一个元素开始向前调用:
- 回调函数形参:当前元素
element、索引index、原数组array - 回调函数需返回布尔值,
true表示匹配成功 - 一旦返回
true,立即返回当前元素,不再继续遍历
简单示例:找最后一个偶数
比如在 [1, 2, 3, 4, 5, 6] 中找最后一个偶数:
const arr = [1, 2, 3, 4, 5, 6]; const lastEven = arr.findLast(x => x % 2 === 0); console.log(lastEven); // 6
它从 6 开始检查,6 % 2 === 0 为 true,直接返回 6,不继续看 4 或 2。
立即学习“Java免费学习笔记(深入)”;
对比 find 和 findLast
find 从左往右,findLast 从右往左:
-
[1, 2, 3, 4].find(x => x > 2)→ 返回3 -
[1, 2, 3, 4].findLast(x => x > 2)→ 返回4
两者语义清晰,选哪个取决于你关心的是“第一个符合条件”还是“最后一个符合条件”。
注意事项和兼容性
目前主流浏览器(Chrome 108+、Firefox 107+、Safari 16.4+)已支持,但 Node.js 需 v18.12+ 或 v20+。若需兼容旧环境,可:
- 使用
arr.slice().reverse().find(...)(注意会创建新数组) - 手动循环:从
arr.length - 1向下遍历,遇到匹配就return - 引入 polyfill(如 core-js)
实际项目中建议先检查运行时环境,再决定是否降级处理。


















