Get to know MDN better
此页面由社区从英文翻译而来。了解更多并加入 MDN Web Docs 社区。
findLast() 方法反向迭代数组,并返回满足提供的测试函数的第一个元素的值。如果没有找到对应元素,则返回 undefined。
如果你需要查找:
数组中测试元素的函数。回调应该返回一个真值,表示已找到匹配的元素,否则返回一个假值。函数在被调用时会传递以下参数:
element当前遍历到的元素。
index当前遍历到的元素的索引(位置)。
array调用 findLast() 的数组本身。
thisArg 可选执行 callbackFn 时,用作 this 的值。详见迭代方法。
数组中满足提供的测试函数索引最高的元素;如果没有元素匹配,返回 undefined。
findLast() 是一个迭代方法。该方法对数组每一个元素按降序(索引从大到小)执行 callbackFn 函数,直到 callbackFn 返回一个真值。然后 findLast() 返回该元素的值并停止遍历数组。如果 callbackFn 没有返回一个真值,则 findLast() 返回 undefined。
callbackFn 会被数组中的每个元素调用,而不仅仅是那些被赋值的元素。对于稀疏数组来说,空槽行为和 undefined 相同。
findLast() 方法是通用的。它只期望 this 值具有 length 属性和整数键的属性。
此示例展示了如何根据数组元素的属性创建测试。
前面的示例可以使用箭头函数和对象解构重写如下:
以下示例查找数组中的最后一个素数元素(如果没有素数,则返回 undefined):
备注:isPrime() 实现仅供演示。在实际应用中,为了避免重复计算,会使用大量记忆化的算法,例如埃拉托斯特尼筛法。
此示例演示了在处理按时间排序的数据时 findLast() 的一个实际应用场景。它从已按 timestamp 排序的列表中查找最近完成的任务。
这比对倒序数据使用 find() 更高效,因为它避免了创建新数组。
如果你需要访问数组中的另一个元素,array 参数会非常有用,尤其是在没有现有的变量引用该数组时。以下示例首先使用 filter() 提取正数,然后使用 findLast() 查找小于其相邻元素的最后一个元素。
稀疏数组中的空槽被访问,并被视为 undefined。
findLast() 方法读取 this 的 length 属性,然后访问每个键为小于 length 的非负整数的属性。
| ECMAScript® 2027 Language Specification # sec-array.prototype.findlast |
启用 JavaScript 以查看此浏览器兼容性表。