JavaScript循环语句常见使用例子

 更新时间:2026年02月24日 11:36:22   作者:莫燃Sir  
在JavaScript中每种循环结构和方法适用于不同场景,选择合适的循环结构可以提高代码的可读性和性能,这篇文章主要介绍了JavaScript循环语句常见使用的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下

在JavaScript中,循环语句用于重复执行一段代码,直到满足特定条件为止。循环是编程中控制流程的重要工具,能够高效处理重复性任务

一.for循环

for循环是一种常见的控制流语句,用于重复执行代码块。它通常用于遍历序列(如列表、元组、字符串)或执行固定次数的操作

for (初始化表达式; 条件表达式; 更新表达式) {
    // 循环体
}

初始化表达式在循环开始前执行一次,通常用于声明计数器变量。条件表达式在每次循环迭代前评估,如果为true则继续循环。更新表达式在每次循环迭代后执行,通常用于更新计数器

for (let i = 0; i < 5; i++) {
    console.log(i);
}
// 输出0到4
break立即终止循环
continue跳过当前迭代

二.forEach循环

JavaScript 的 forEach 方法是数组对象的内置方法,用于遍历数组的每个元素并执行回调函数

array.forEach(function(currentValue, index, array) {
  // 执行操作
}, thisArg);

回调函数中的参数:

currentValue当前处理的数组元素
index当前元素的索引
array正在遍历的数组本身

可以只接收数组内的值,不接收索引和数组本身

例子:

const numbers = [1, 2, 3];
numbers.forEach(num => {
  console.log(num); // 输出:1, 2, 3
});

注意:

forEach 不会返回新数组

无法通过 return 或 break 中断循环

对空数组调用 forEach 不会执行回调函数

三.map循环

JavaScript 中的 map 方法是数组的高阶函数之一,用于遍历数组并对每个元素执行操作,最终返回一个新数组,而不会修改原数组

const newArray = array.map(function(currentValue, index, arr) {
  // 返回处理后的元素
}, thisValue);

回调函数中的参数:

currentValue当前处理的元素
index当前元素的索引
arr原数组

例子:

const numbers = [1, 2, 3, 4];
const doubled = numbers.map(num => num * 2);
console.log(doubled); // [2, 4, 6, 8]

注意:

map 不会修改原数组,而是返回一个新数组。

如果未显式返回任何值,回调函数会返回 undefined,导致新数组对应位置为 undefined

forEach与map的区别

forEach:仅遍历数组,无返回值(返回 undefined

map:遍历并返回新数组,每个元素由回调函数处理后的结果组成,适合数据转换

四.filter循环(过滤)

filter 是 JavaScript 数组的一个高阶函数,用于创建一个新数组,包含通过回调函数测试的所有元素。回调函数返回 true 或 false,决定元素是否包含在新数组中

const newArray = array.filter(callback(element, index, array));

回调函数中的参数:

element当前处理的元素
index当前元素的索引
array调用 filter 的数组

示例:过滤出大于 2 的数字

const numbers = [1, 2, 3, 4];
const filtered = numbers.filter(num => num > 2);
console.log(filtered); // [3, 4]

注意:

filter 不会修改原数组,而是返回一个新数组

如果所有元素都不满足条件,返回空数组

回调函数必须是返回布尔值的函数,否则会隐式转换为布尔值

五.some循环

在JavaScript中,Array.prototype.some()是一个数组方法,用于测试数组中是否至少有一个元素满足给定的条件。该方法会遍历数组中的每个元素,直到找到一个满足条件的元素为止

array.some(callback(element, index, array), thisArg)

回调函数中的参数:

callback测试每个元素的函数,接收三个参数
element当前处理的元素
index当前元素的索引
array调用 some() 的数组本身

返回值

如果数组中至少有一个元素满足条件,返回 true

如果所有元素均不满足条件,返回 false

示例:检查数组中是否有偶数

const numbers = [1, 3, 5, 7, 9];
const hasEvenNumber = numbers.some(num => num % 2 === 0);
console.log(hasEvenNumber); // 输出: false

注意:

some() 不会修改原数组

如果数组为空,some() 始终返回 false

some() 会在找到第一个满足条件的元素后立即停止遍历

六.every循环

every 是 JavaScript 数组的一个内置方法,用于检测数组中的所有元素是否都满足指定条件。该方法接受一个回调函数作为参数,并对数组中的每个元素执行该函数,直到回调函数返回 false。如果所有元素都满足条件(即回调函数对所有元素返回 true),则 every 方法返回 true;否则返回 false

array.every(callback(element, index, array), thisArg)
callback对每个元素执行的函数
element当前处理的数组元素
index当前元素的索引
array调用 every 的数组本身

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

const numbers = [1, 2, 3, 4, 5];
const allPositive = numbers.every(num => num > 0);
console.log(allPositive); // true

注意:

every 方法在遇到第一个返回 false 的回调时会立即停止遍历数组

空数组调用 every 方法会返回 true(因为没有任何元素不满足条件)

every 不会改变原数组

some与every的区别

some在遇到第一个true时终止;every在遇到第一个false时终止

some对空数组始终返回falseevery对空数组始终返回true(逻辑上称为“空真”)

some适合存在性检查;every适合全体一致性验证 

every循环只有所有元素都满足条件,才会返回true,哪怕只要有一个元素不满足条件,就会返回false

七.reduce循环

reduce 是 JavaScript 数组的一个高阶函数,用于将数组元素通过回调函数累积为单个值。它遍历数组的每个元素,并将上一次回调的结果作为下一次回调的输入

array.reduce(callback(accumulator, currentValue, currentIndex, array), initialValue)
accumulator累积值,初始值为 initialValue 或数组的第一个元素
currentValue当前处理的数组元素
currentIndex当前元素的索引
array调用 reduce 的数组本身

示例:计算数组元素的总和

const numbers = [1, 2, 3, 4];
const sum = numbers.reduce((acc, curr) => acc + curr, 0);
console.log(sum); // 输出: 10

注意:

如果数组为空且未提供 initialValuereduce 会抛出错误

提供 initialValue 可以避免因空数组导致的错误,同时明确初始累积值的类型

reduce 不会改变原数组,而是返回一个新的累积值

八.for in 循环

for...in 循环用于遍历对象的可枚举属性(遍历对象的属性)

for (variable in object) {
  // 执行的代码
}
variable每次迭代时,将属性名赋值给该变量
object被遍历的对象

示例

const person = {
  name: 'John',
  age: 30,
  job: 'Developer'
};

for (const key in person) {
  if (person.hasOwnProperty(key)) {
    console.log(`${key}: ${person[key]}`);
  }
}

输出

name: John
age: 30
job: Developer

九.for of 循环

for...of 循环是 ES6 引入的一种遍历可迭代对象(如数组、字符串、Map、Set 等)的语法结构

for of 循环数组(可迭代的对象)

for (variable of iterable) {
  // 执行的代码块
}
variable每次迭代中,将迭代对象的当前属性值赋给该变量
iterable可迭代对象,如数组、字符串、Map、Set 等

遍历字符串

for...of 循环可以逐个字符遍历字符串:

const text = 'hello';

for (const char of text) {
  console.log(char);
}
// 输出:
// h
// e
// l
// l
// o

补充:

通过添加keys()方法可以获取数组的索引

通过添加values()方法可以获取数组的值

通过添加entries()方法可以获取数组的索引和值

通过结构赋值直接将索引和值赋值给变量

for of 和for in 区别

遍历目标不同

for...of 用于遍历可迭代对象(如数组、字符串、Map、Set 等),直接获取元素值

for...in 用于遍历对象的可枚举属性(包括原型链上的属性),获取的是键名(key)

适用场景

for...of 适合需要直接操作元素值的场景(如数组遍历)

for...in 适合需要检查对象属性或调试的场景(但通常需配合 hasOwnProperty 过滤原型属性)

十.find 循环

find 返回第一个满足条件的值

 let newVal = arr.find(function(val,index,thisArr){
             if(val >5){
                 return true;
            }
         })
         console.log(newVal)
val当前遍历的数组元素
index当前元素的索引(可选
thisArr原始数组(可选)

十一.findIndex 循环

findIndex 返回第一个满足条件的索引

findIndex 是 JavaScript 数组的一个内置方法,用于查找数组中第一个满足条件的元素的索引。如果找不到符合条件的元素,返回 -1

array.findIndex(callback(element, index, array), thisArg)
element当前处理的元素
index当前元素的索引
array调用 findIndex 的数组本身

注意:

findIndex 在找到目标后会立即终止遍历

空槽(empty)元素会被跳过,回调不会执行

若需提前终止循环,findIndex 本身已实现

总结

到此这篇关于JavaScript循环语句常见使用例子的文章就介绍到这了,更多相关JS循环语句内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • JavaScript 页面编码与浏览器类型判断代码

    JavaScript 页面编码与浏览器类型判断代码

    JavaScript 获取浏览器的类型和页面编码的函数代码。
    2010-06-06
  • js的逻辑运算符 ||

    js的逻辑运算符 ||

    初次见到这样语句 a=a || [] 还有些纳闷,因为在其他语言中没见过有如此用法。
    2010-05-05
  • js实现base64、url和blob之间相互转换的三种方式

    js实现base64、url和blob之间相互转换的三种方式

    Blob对象表示一个不可变、原始数据的类文件对象,Blob表示的不一定是JavaScript原生格式的数据,下面这篇文章主要给大家介绍了关于js实现base64、url和blob之间相互转换的三种方式,需要的朋友可以参考下
    2023-04-04
  • JS小功能(操作Table--动态添加删除表格及数据)实现代码

    JS小功能(操作Table--动态添加删除表格及数据)实现代码

    这篇文章主要介绍了操作Table--动态添加删除表格及数据实现代码,有需要的朋友可以参考一下
    2013-11-11
  • JavaScript find()方法及返回数据实例

    JavaScript find()方法及返回数据实例

    这篇文章主要介绍了JavaScript中的find()方法和返回数据的内存指向,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • Javascript玩转继承(三)

    Javascript玩转继承(三)

    在前两篇文章中,介绍了构造继承和原型继承。今天把剩下的两种写完,这两种的应用相对于前两种来说应用很少,因此我把他们称为是非主流继承方式
    2014-05-05
  • fullPage.js和CSS3实现全屏滚动效果

    fullPage.js和CSS3实现全屏滚动效果

    这篇文章主要为大家详细介绍了fullPage.js和CSS3实现全屏滚动效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • Javascript多种浏览器兼容写法分析

    Javascript多种浏览器兼容写法分析

    随着以Firefox为代表的第三方浏览器的兴起,我们做的网站也不能再JUST IE了,如果把原来的一些javascript代码放到IE以外的浏览器的话,往往都不能正常运行或出错,所以这里介绍一下怎么改进我们的JS,让它能更加规范,更加具有兼容性。
    2008-09-09
  • 深入浅析JavaScript中的in关键字和for-in循环

    深入浅析JavaScript中的in关键字和for-in循环

    这篇文章主要介绍了JavaScript中的in关键字和for-in循环,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-04-04
  • 利用纯js + transition动画实现移动端web轮播图详解

    利用纯js + transition动画实现移动端web轮播图详解

    这篇文章主要给大家介绍了利用纯js + transition动画实现移动端web轮播图的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-09-09

最新评论