当前位置:首页 > JavaScript

js实现 $.each

2026-02-01 09:30:16JavaScript

$.each 的实现方法

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

js实现 $.each

实现数组和对象的遍历

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

function isArrayLike(obj) {
  return typeof obj === 'object' && obj.length !== undefined;
}

使用示例

const arr = [1, 2, 3];
each(arr, function(index, value) {
  console.log(`Index: ${index}, Value: ${value}`);
});

const obj = { a: 1, b: 2 };
each(obj, function(key, value) {
  console.log(`Key: ${key}, Value: ${value}`);
});

实现链式调用

如果需要支持链式调用,可以在 each 方法中返回传入的集合:

js实现 $.each

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

支持 this 绑定

$.each 允许在回调函数中使用 this 指向当前元素。上述实现已经通过 callback.call 确保了这一点。

提前终止遍历

如果回调函数返回 false,遍历会提前终止。这在某些场景下非常有用,比如在查找特定元素时。

each([1, 2, 3], function(index, value) {
  console.log(value);
  if (value === 2) {
    return false; // 终止遍历
  }
});

通过以上方法,可以实现一个功能接近 jQuery $.each 的遍历工具函数。

标签: jseach
分享给朋友:

相关文章

js 实现vue模板

js 实现vue模板

实现 Vue 模板的 JavaScript 方法 通过原生 JavaScript 可以实现类似 Vue 的模板渲染功能,主要包括数据绑定、指令处理和模板解析。以下是核心实现思路: 数据绑定与响应式…

js实现轮播图

js实现轮播图

基础轮播图实现 使用HTML、CSS和JavaScript实现一个简单的自动轮播图。HTML结构包含一个容器和多个图片项。 <div class="slider"> <div…

js实现验证码

js实现验证码

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

js 实现继承

js 实现继承

原型链继承 通过让子类的原型对象指向父类的实例来实现继承。子类实例可以访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Par…

js实现瀑布流

js实现瀑布流

实现瀑布流布局 瀑布流布局是一种常见的网页布局方式,常用于图片展示、商品列表等场景。以下是使用 JavaScript 实现瀑布流布局的几种方法。 纯 JavaScript 实现 通过计算元素的位置和…

js实现tab选项卡切换

js实现tab选项卡切换

实现Tab选项卡切换的JavaScript方法 使用纯JavaScript实现Tab切换功能,可以通过监听点击事件动态切换内容显示状态。以下是两种常见实现方式: 基础DOM操作实现 // 获取…