当前位置:首页 > JavaScript

js includes实现原理

2026-02-02 19:18:11JavaScript

JavaScript includes 方法实现原理

Array.prototype.includesString.prototype.includes 是 JavaScript 中常用的方法,用于判断数组或字符串是否包含特定元素或子串。以下是它们的实现原理和细节。

数组的 includes 方法

Array.prototype.includes 用于检查数组是否包含某个值,返回布尔值。其实现原理可以概括为:

  • 遍历数组元素,使用严格相等(===)比较目标值和当前元素。
  • 如果找到匹配项,立即返回 true
  • 如果遍历结束未找到匹配项,返回 false
  • 可以指定起始搜索位置(第二个参数)。

示例实现(模拟 includes 的核心逻辑):

js includes实现原理

function arrayIncludes(array, searchElement, fromIndex = 0) {
  const length = array.length;
  fromIndex = fromIndex >= 0 ? fromIndex : Math.max(0, length + fromIndex);

  for (let i = fromIndex; i < length; i++) {
    if (array[i] === searchElement) {
      return true;
    }
  }
  return false;
}

字符串的 includes 方法

String.prototype.includes 用于检查字符串是否包含子串,返回布尔值。其实现原理如下:

  • 在字符串中搜索子串,如果找到则返回 true,否则返回 false
  • 可以指定起始搜索位置(第二个参数)。
  • 内部使用字符串匹配算法(如朴素算法或更高效的算法)。

示例实现(模拟 includes 的核心逻辑):

js includes实现原理

function stringIncludes(str, searchString, position = 0) {
  if (position < 0) position = 0;
  if (position >= str.length) return false;
  return str.indexOf(searchString, position) !== -1;
}

注意事项

  • 严格相等includes 使用 === 进行比较,不会进行类型转换。
  • NaN 处理:数组的 includes 能正确识别 NaN[NaN].includes(NaN) 返回 true),而 indexOf 不能。
  • 性能:对于大型数组或字符串,includes 的时间复杂度为 O(n),但实际性能可能因引擎优化而异。

使用示例

数组示例:

const arr = [1, 2, 3, NaN];
console.log(arr.includes(2)); // true
console.log(arr.includes(NaN)); // true

字符串示例:

const str = 'Hello, world!';
console.log(str.includes('world')); // true
console.log(str.includes('WORLD')); // false(区分大小写)

通过理解这些原理,可以更高效地使用 includes 方法并避免常见错误。

标签: 原理js
分享给朋友:

相关文章

js实现vue路由

js实现vue路由

Vue路由基础实现 使用Vue Router实现前端路由需要先安装并配置路由库。Vue Router是Vue.js官方的路由管理器。 安装Vue Router: npm install vue-r…

js实现抽奖

js实现抽奖

实现抽奖功能的基本思路 抽奖功能的核心是随机选择奖项并展示结果。可以通过数组存储奖项,利用随机数生成索引,最后通过动画增强用户体验。 准备奖项数据 定义一个数组存储奖项信息,每个奖项可以包含名称、图…

js实现vue路由

js实现vue路由

Vue 路由的基本实现 在 Vue.js 中实现路由功能通常使用 Vue Router 库。Vue Router 是 Vue.js 官方的路由管理器,用于构建单页面应用(SPA)。 安装 Vue R…

js实现原理

js实现原理

JavaScript 实现原理 JavaScript 是一种解释型语言,其实现原理涉及多个核心组件和运行机制,包括引擎、运行时环境、事件循环等。 引擎与解释执行 现代 JavaScript 引擎(如…

js实现上传图片

js实现上传图片

使用HTML5的File API实现图片上传 HTML5的File API允许通过JavaScript访问用户选择的文件。需要创建一个文件输入元素,并监听其change事件。 <input t…

vue事件实现原理

vue事件实现原理

Vue 事件实现原理 Vue 的事件系统基于发布-订阅模式,通过 $on、$emit 等方法实现组件间通信。以下是核心实现原理的分解: 事件注册与存储 Vue 实例内部通过 _events 对象存储…