当前位置:首页 > JavaScript

js实现 $.each

2026-04-06 02:11:21JavaScript

js实现 $.each

js实现 $.each

实现 jQuery 的 $.each 方法

在原生 JavaScript 中,可以通过以下方式实现类似 jQuery 的 $.each 方法。该方法用于遍历数组或对象,并对每个元素执行回调函数。

实现代码

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

// 辅助函数:检查是否为类数组对象(如 arguments、NodeList 等)
function isArrayLike(obj) {
    return obj != null && typeof obj === 'object' && 'length' in obj && !isNaN(obj.length);
}

使用方法

// 遍历数组
each([1, 2, 3], function(index, value) {
    console.log(index, value);
});

// 遍历对象
each({ a: 1, b: 2 }, function(key, value) {
    console.log(key, value);
});

功能说明

  • 数组或类数组对象:回调函数的参数为 (index, value),类似于 Array.prototype.forEach
  • 普通对象:回调函数的参数为 (key, value),遍历对象的可枚举属性。
  • 上下文绑定:回调函数中的 this 指向当前遍历的元素(与 jQuery 行为一致)。

注意事项

  • 该方法不会处理稀疏数组(如 [1, , 3])中的空位。
  • 使用 hasOwnProperty 确保只遍历对象自身的属性,而非原型链上的属性。

标签: jseach
分享给朋友:

相关文章

js实现打印

js实现打印

使用window.print()方法实现打印 在JavaScript中,可以通过调用window.print()方法直接触发浏览器的打印功能。这会打开系统的打印对话框,用户可以选择打印机和设置打印选项…

js实现复制功能

js实现复制功能

使用 document.execCommand 方法 这种方法适用于较旧的浏览器,但在现代浏览器中可能被逐步淘汰。通过创建一个临时的 textarea 元素,将文本内容放入其中,然后执行复制命令。…

jquery.js

jquery.js

jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互等操作。以下是关于 jQuery.js 的核心信息和使用方法: 获取 jQ…

js实现复制到剪贴板

js实现复制到剪贴板

使用document.execCommand方法(传统方式,已废弃但部分浏览器仍支持) 该方法适用于旧版浏览器,但已被标记为废弃。执行前需确保文本已被选中: function copyToClipb…

js实现vr

js实现vr

使用WebXR API实现VR体验 WebXR是浏览器中实现VR和AR体验的标准API,它取代了早期的WebVR。现代浏览器如Chrome、Edge和Firefox已支持WebXR。 // 初始化W…

js类实现

js类实现

使用类实现 JavaScript 功能 在 JavaScript 中,类(Class)是一种语法糖,基于原型继承机制。通过 class 关键字可以更直观地定义对象模板。 基本类定义 class…