当前位置:首页 > 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 模板的 JavaScript 方法 通过原生 JavaScript 可以实现类似 Vue 的模板渲染功能,主要包括数据绑定、指令处理和模板解析。以下是核心实现思路: 数据绑定与…

js实现vue

js实现vue

Vue.js 简介 Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。其核心库专注于视图层,易于与其他库或现有项目整合。 实现 Vue.js 的基本步骤 安装 Vue.j…

js实现动画

js实现动画

使用 CSS 动画与 JavaScript 控制 通过 JavaScript 动态添加或移除 CSS 类来触发动画。CSS 定义关键帧(@keyframes),JavaScript 通过 classL…

js实现计算器

js实现计算器

实现基础计算器功能 使用JavaScript创建一个基础计算器需要处理数字输入、运算符逻辑和结果显示。以下是一个简单的实现示例: let currentInput = '0'; let previ…

js实现日历

js实现日历

实现日历的基本思路 使用JavaScript实现日历的核心是动态生成日期表格,并处理月份切换逻辑。需要计算当前月的天数、起始星期几,并动态渲染到页面上。 获取当前日期信息 通过Date对象获取当前年…

php购物车实现原理

php购物车实现原理

PHP 购物车实现原理 购物车是电子商务网站的核心功能之一,PHP 实现购物车功能主要依赖会话(Session)或数据库存储用户选择的商品信息。以下是常见的实现方式和技术要点: 基于 Session…