当前位置:首页 > JavaScript

js 实现 find 方法

2026-03-16 00:41:18JavaScript

实现 Array.prototype.find 方法

JavaScript 的 find 方法用于查找数组中第一个满足条件的元素。如果没有找到符合条件的元素,则返回 undefined

基本实现

Array.prototype.myFind = function(callback, thisArg) {
  for (let i = 0; i < this.length; i++) {
    if (callback.call(thisArg, this[i], i, this)) {
      return this[i]
    }
  }
  return undefined
}

使用示例

const array = [5, 12, 8, 130, 44]
const found = array.myFind(element => element > 10)
console.log(found) // 12

实现要点

  • 遍历数组中的每个元素
  • 对每个元素执行回调函数
  • 如果回调函数返回 true,立即返回当前元素
  • 如果遍历结束没有找到符合条件的元素,返回 undefined
  • 支持传递 thisArg 参数指定回调函数的 this

Polyfill 实现

以下是更完整的 polyfill 实现,包含参数校验:

js 实现 find 方法

Array.prototype.myFind = function(callback, thisArg) {
  if (this == null) {
    throw new TypeError('"this" is null or not defined')
  }
  if (typeof callback !== 'function') {
    throw new TypeError(callback + ' is not a function')
  }

  const array = Object(this)
  const length = array.length >>> 0

  for (let i = 0; i < length; i++) {
    if (i in array && callback.call(thisArg, array[i], i, array)) {
      return array[i]
    }
  }
  return undefined
}

性能考虑

  • 使用 for 循环而非 forEach 以便可以提前返回
  • 使用 in 操作符检查稀疏数组
  • 使用 length >>> 0 确保长度为非负整数

标签: 方法js
分享给朋友:

相关文章

js实现拖拽

js实现拖拽

实现拖拽的基本步骤 使用JavaScript实现拖拽功能需要监听鼠标事件,包括mousedown、mousemove和mouseup。以下是实现的基本逻辑: const draggableEleme…

jquery的方法

jquery的方法

jQuery 常用方法分类 jQuery 是一个快速、简洁的 JavaScript 库,提供了大量简化 DOM 操作、事件处理、动画效果和 AJAX 交互的方法。以下是 jQuery 核心方法的分类和…

js实现防洪

js实现防洪

防抖(Debounce)实现 防抖的核心思想是在事件触发后延迟执行回调函数,若在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口调整等场景。 function debounce(func,…

js实现投球

js实现投球

实现投球动画的基本思路 使用JavaScript和CSS动画结合的方式模拟投球效果。核心是通过改变元素的位置、旋转和缩放属性,配合定时器或CSS过渡实现平滑动画。 创建基础HTML结构 <di…

js实现图片

js实现图片

图片加载与显示 在JavaScript中,可以通过Image对象动态加载图片。创建实例后设置src属性触发加载,通过onload回调处理加载完成后的操作: const img = new Ima…

js实现滚动

js实现滚动

实现滚动效果的方法 在JavaScript中实现滚动效果可以通过多种方式完成,以下是一些常见的方法: 使用window.scrollTo() window.scrollTo()方法可以将页面滚动到指…