当前位置: 首页 > news >正文

Web前端:JavaScript every()迭代方法

1. every() 是什么?

    every() 是 JavaScript 数组(Array)提供的一个内置高阶函数,用于检测数组中是否所有元素都满足指定条件。它会对数组的每个元素执行一个测试函数,并根据测试结果返回一个布尔值(true 或 false)。

2. 核心作用 

  • 验证数组元素的一致性:检查数组中的每个元素是否都符合某个条件。

  • 返回布尔值

    • 如果所有元素都满足条件 → 返回 true

    • 只要有一个元素不满足条件 → 立即停止遍历,返回 false

 3. 语法解析

const result = array.every((currentElement, index, array) => {// 测试逻辑,返回 true/false
}, thisArg);
参数说明
currentElement当前遍历的元素(必填)
index当前元素的索引(可选)
array调用 every() 的原始数组(可选)
thisArg执行回调函数时用作 this 的值(可选,很少用)

 

4. 关键特性

  • 短路运算:遇到第一个不满足条件的元素时,立即停止遍历(类似逻辑与 &&)。

  • 不改变原数组:纯函数,不影响原始数组。

  • 空数组处理:若数组为空,默认返回 true(因为“没有元素不满足条件”)。

 

5. 实例演示

示例 1:检查所有元素是否为正数

const numbers = [2, 4, 6, 8, 10];
const allPositive = numbers.every(num => num > 0);
console.log(allPositive); // true(所有元素 > 0)

示例 2:检测数组元素类型

const data = ["apple", "banana", "cherry"];
const allStrings = data.every(item => typeof item === "string");
console.log(allStrings); // true(所有元素都是字符串)

示例 3:短路验证(遇到 false 即停止)

const nums = [10, 20, 30, 5, 40];
nums.every((num, index) => {console.log(`检查第 ${index} 个元素: ${num}`);return num > 10;
});
// 输出:
//   检查第 0 个元素: 10 → 10>10? false → 停止遍历!
// 最终返回 false

示例 4:空数组的特殊情况

const emptyArray = [];
const result = emptyArray.every(num => num > 0);
console.log(result); // true(没有元素可验证,默认通过)

6. 实际应用场景

1.表单验证

        检查表单输入是否全部非空: 

const inputs = ["John", "Doe", "john@example.com"];
const allFilled = inputs.every(input => input.trim() !== "");
console.log(allFilled); // true

2.权限校验

验证用户是否拥有所有权限:

const userPermissions = ["read", "write", "delete"];
const requiredPermissions = ["read", "write"];
const hasAllPermissions = requiredPermissions.every(perm => userPermissions.includes(perm)
);
console.log(hasAllPermissions); // true

3.数据一致性检查

确保数组中所有对象都有 id 属性:

const products = [{ id: 1, name: "Phone" },{ id: 2, name: "Laptop" }
];
const allValid = products.every(product => "id" in product);
console.log(allValid); // true

7. 与 some() 的对比

方法作用返回值条件
every()所有元素满足条件?全部满足 → true
some()至少一个元素满足条件?有一个满足 → true
// 对比示例
const ages = [18, 22, 25];
const allAdult = ages.every(age => age >= 18); // true
const hasTeen = ages.some(age => age < 20);    // true

8. 兼容性

  • 支持所有现代浏览器(Chrome、Firefox、Edge 等)及 IE9+。

  • 旧版 IE 可用 Polyfill 支持。

 

总结

  • every() 是“全真为真”:适合需要严格验证所有元素的场景。

  • 短路特性优化性能:避免不必要的遍历。

  • 空数组返回 true:注意这一边界情况。

  • 搭配箭头函数更简洁arr.every(item => condition)

http://www.dtcms.com/a/295747.html

相关文章:

  • 闲庭信步使用图像验证平台加速FPGA的开发:第三十四课——车牌识别的FPGA实现(6)叠加车牌识别的信息
  • 认识单片机
  • Centos新增磁盘,进行根目录扩容
  • SkyWalking异步采集spring gateway日志
  • 基于Qt和OpenCV的图片与视频编辑器
  • 完整指南:使用Apache htpasswd为Chronograf配置基础认证及功能详解
  • 响应式前端设计:CSS 自适应布局与字体大小的最佳实践
  • spring boot h2数据库无法链接问题
  • 数学基础弱能学好大数据技术吗?
  • JimuReport 积木报表 v2.1.1 版本发布,免费开源的报表和大屏
  • 基于定制开发开源AI智能名片S2B2C商城小程序源码的立减/立得类活动创新设计与应用研究
  • 2025年计算机网络与教育科学国际会议(ICCNES 2025)
  • Spring MVC中常用注解_笔记
  • Kafka入门指南:从零开始掌握分布式消息队列
  • uniapp vue3版本中使用pinia 以及持久化处理
  • 【自用】NLP算法面经(6)
  • TCP重传率优化在云服务器网络协议栈的调优实践
  • MySQL高可用部署
  • 深度分析Android多线程编程
  • aml1-eto 移植后多长时间转阴
  • Android跨进程通信完全教程:从基础到实战
  • 从0开始学习R语言-Day56--空间变系数模型
  • 进阶向:基于Python的轻量级Markdown笔记管理器
  • git鉴权失败问题每次clone 都要输入用户名密码问题
  • Two Knights(数学归纳)
  • 本地部署Jupyter服务,没有公网IP如何用内网穿透工具实现外网远程访问?
  • 人形机器人_双足行走动力学:Maxwell模型及在拟合肌腱特性中的应用
  • Linux 下安装Python指定版本(可离线安装)
  • Java学习----工厂方法模式
  • 线程通信模型