当前位置:首页 > JavaScript

js foreach 实现

2026-03-14 19:23:22JavaScript

forEach 的基本用法

Array.prototype.forEach 是 JavaScript 中用于遍历数组的方法,接受一个回调函数作为参数,对数组的每个元素执行该函数。

const array = [1, 2, 3];
array.forEach((element, index, array) => {
  console.log(element, index, array);
});

实现自定义 forEach

可以通过扩展 Array.prototype 或独立函数实现类似 forEach 的功能。

function customForEach(array, callback) {
  for (let i = 0; i < array.length; i++) {
    callback(array[i], i, array);
  }
}

const numbers = [10, 20, 30];
customForEach(numbers, (num, index) => {
  console.log(`Element at ${index} is ${num}`);
});

原型链扩展实现

Array.prototype 上添加方法,模拟原生 forEach 的行为。

Array.prototype.myForEach = function(callback) {
  for (let i = 0; i < this.length; i++) {
    callback(this[i], i, this);
  }
};

const fruits = ['apple', 'banana', 'cherry'];
fruits.myForEach((fruit, idx) => {
  console.log(`${idx + 1}: ${fruit}`);
});

处理稀疏数组

原生 forEach 会跳过空元素,自定义实现时可通过 hasOwnProperty 检查。

Array.prototype.sparseForEach = function(callback) {
  for (let i = 0; i < this.length; i++) {
    if (this.hasOwnProperty(i)) {
      callback(this[i], i, this);
    }
  }
};

const sparseArray = [1, , 3];
sparseArray.sparseForEach(item => console.log(item)); // 只输出 1 和 3

终止遍历的变通方案

原生 forEach 不能通过 break 终止,但可以通过抛出异常或使用 some/every 替代。

const data = [1, 2, 3, 4, 5];
try {
  data.forEach(item => {
    if (item > 3) throw new Error('BreakLoop');
    console.log(item);
  });
} catch (e) {
  if (e.message !== 'BreakLoop') throw e;
}

性能注意事项

在大型数组或性能敏感场景中,传统 for 循环通常比 forEach 更快,但可读性较差。

js foreach 实现

const bigArray = new Array(1000000).fill(0);
console.time('forEach');
bigArray.forEach(x => x * 2);
console.timeEnd('forEach');

console.time('for loop');
for (let i = 0; i < bigArray.length; i++) {
  bigArray[i] * 2;
}
console.timeEnd('for loop');

标签: jsforeach
分享给朋友:

相关文章

js实现分页

js实现分页

分页的基本实现思路 在JavaScript中实现分页功能通常需要结合前端和后端逻辑。前端负责渲染分页控件和处理用户交互,后端负责提供分页数据。 前端分页实现 纯前端分页适用于数据量较小的情况,可以直…

js实现验证码

js实现验证码

使用Canvas生成图形验证码 在HTML中创建一个Canvas元素用于绘制验证码。通过JavaScript随机生成数字或字母组合,并添加干扰线、噪点等干扰元素增强安全性。 <canvas i…

js实现换肤

js实现换肤

使用CSS变量实现换肤 通过CSS变量可以轻松实现主题切换功能。CSS变量在根元素中定义,通过JavaScript动态修改这些变量值。 :root { --primary-color: #349…

jquery js

jquery js

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够更高…

js画图实现

js画图实现

使用Canvas API绘制图形 Canvas是HTML5提供的绘图API,通过JavaScript操作Canvas元素可以绘制各种图形。以下是一个简单的示例: <canvas id="myC…

js实现交换

js实现交换

交换变量的方法 在JavaScript中,交换两个变量的值有多种方法。以下是常见的几种实现方式: 使用临时变量 通过引入一个临时变量来存储其中一个变量的值,实现交换: let a = 1; le…