当前位置:首页 > JavaScript

js 实现each

2026-04-04 02:38:04JavaScript

JavaScript 实现 each 方法

在 JavaScript 中,可以通过多种方式实现类似 jQuery 的 each 方法,用于遍历数组或对象。

js 实现each

遍历数组的 each 方法

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

// 使用示例
const arr = [1, 2, 3];
each(arr, function(item, index) {
  console.log(`元素: ${item}, 索引: ${index}`);
});

遍历对象的 each 方法

function eachObject(obj, callback) {
  for (let key in obj) {
    if (obj.hasOwnProperty(key)) {
      callback(obj[key], key, obj);
    }
  }
}

// 使用示例
const obj = { a: 1, b: 2, c: 3 };
eachObject(obj, function(value, key) {
  console.log(`键: ${key}, 值: ${value}`);
});

通用的 each 方法

可以创建一个同时处理数组和对象的通用 each 方法:

js 实现each

function each(collection, callback) {
  if (Array.isArray(collection)) {
    for (let i = 0; i < collection.length; i++) {
      callback(collection[i], i, collection);
    }
  } else if (typeof collection === 'object' && collection !== null) {
    for (let key in collection) {
      if (collection.hasOwnProperty(key)) {
        callback(collection[key], key, collection);
      }
    }
  }
}

// 使用示例
each([1, 2, 3], function(item) {
  console.log(item);
});

each({ a: 1, b: 2 }, function(value, key) {
  console.log(key, value);
});

在原型上扩展 each 方法

可以在数组和对象的原型上扩展 each 方法:

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

Object.prototype.each = function(callback) {
  for (let key in this) {
    if (this.hasOwnProperty(key)) {
      callback(this[key], key, this);
    }
  }
};

// 使用示例
[1, 2, 3].each(function(item) {
  console.log(item);
});

{ a: 1, b: 2 }.each(function(value, key) {
  console.log(key, value);
});

注意事项

  • 使用 hasOwnProperty 检查可以避免遍历到原型链上的属性
  • 在原型上扩展方法可能会与其他库冲突,需谨慎使用
  • 回调函数的参数顺序可以自定义,通常为 (value, index/key, collection)

标签: jseach
分享给朋友:

相关文章

js实现驼峰

js实现驼峰

实现驼峰命名的几种方法 使用正则表达式和字符串替换 通过正则表达式匹配字符串中的特定模式(如下划线或短横线),并将其后的字母转换为大写,同时移除分隔符。 function toCamelCase(s…

js树实现

js树实现

树的基本概念 树是一种非线性的数据结构,由节点和边组成。每个节点包含一个值和指向子节点的引用。树的顶部节点称为根节点,没有子节点的节点称为叶节点。 树的实现方式 在JavaScript中,树可以通过…

js实现自举

js实现自举

实现 JavaScript 自举的方法 JavaScript 自举(Bootstrap)通常指通过 JavaScript 动态加载自身或依赖的脚本,实现运行时环境的初始化或扩展。以下是几种常见实现方式…

js实现跑马灯

js实现跑马灯

实现跑马灯效果 使用HTML和JavaScript可以轻松实现跑马灯效果。以下是两种常见的实现方式: HTML结构 <div id="marquee"> <span>…

js实现图片

js实现图片

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

js 实现图片 放大

js 实现图片 放大

使用 CSS transform 实现图片放大 通过 CSS 的 transform: scale() 属性可以实现图片的平滑放大效果。结合 JavaScript 监听鼠标事件控制放大状态: con…