本文地址: https://www.cnblogs.com/zichliang/p/17412968.html

在Javascript中有很多种循环方式。有多种循环方式可以用来遍历数组、对象、以及执行一些重复性任务

但是有很多方式甚至从未用过,所以简单来总结一下JS中的循环

for循环

for 循环是在您希望创建循环时经常使用的工具。

例:

for (let i = 0; i < 5; i++) {
console.log(`第${i + 1}次循环遍历`)
}

结果

while 循环

While语句包括一个循环条件和一段代码块,只要条件为真,就不断循环执行代码块。

例:

let i = 0;
while (i < 100) {
i = i + 1;
console.log(`第${i}次循环遍历`)
}

结果

do……while循环

先运行循环代码 再执行判断条件

let a = 3;
let b = 0; do {
console.log("打印b的值>>>>>",b);
b++;
} while (b < a); // 当a小于等于b的时候终止她。

结果

while:先判断后执行; do-while:先执行再判断,即使初始条件不成立, do-while循环至少执行一次;

for-in循环

fo…in循环一般用于对象的遍历

let kj = {
"a": 1,
"b": 2,
"c": 3
} //使用for-in遍历这个对象
for (let k in kj) {
console.log(k, kj[k])
}

结果



注! 最好不要用for in遍历数组

for-of循环

for...of 循环是 ES6 中新增的一种循环类型,它允许您遍历可迭代对象(例如数组、字符串、Map 或 Set)中的每个元素,并对其执行指定的操作。

for-of 可以更方便的循环遍历数组等

let arr = [1, 2, 4, 5, 6, 7]
for (let v of arr) {
console.log(v);
}

结果

for in遍历的是数组的索引(即键名),而for of遍历的是数组元素值。 for in更适合遍历对象,不要使用for in遍历数组 使用for in会遍历数组所有的可枚举属性,包括原型。例如上栗的原型方法method和name属性

map()循环

map()是一种常用的数组方法,它可以将一个数组中的每个元素按照一定规则映射为一个新的数组

const originalArray = [1, 2, 3, 4, 5];
const newArray = originalArray.map((number) => {
console.log(number)
return number * 2;
}); console.log(newArray); // Output: [2, 4, 6, 8, 10]

结果

forEach循环

forEach()是一种常用的数组方法,可以帮助我们遍历一个数组并对其中的每个元素执行指定的操作。

例子

const originalArray = [1, 2, 3, 4, 5];
originalArray.forEach((number) => {
console.log(number * 2);
});

结果

forEach()方法没有返回值,因此我们不能将其运行结果赋值给其他变量

filter()过滤循环

filter()是一种常用的数组方法,它可以帮助我们按照特定条件筛选出一个数组中的部分元素并返回一个新的数组

const originalArray = [1, 2, 3, 4, 5];
const filteredArray = originalArray.filter((number) => {
// 只返回能被2整除的数 也就是偶数
return number % 2 === 0;
}); console.log(filteredArray);

结果

filter()方法不会修改原始数组,而是返回一个新的数组作为其运行结果。因此,如果我们需要在原始数组中删除一些元素,那么就应该使用splice()方法

JS实现Python中的zip循环

熟悉python的都知道ZIP循环面对循环两个数组很好用 那么在python中如何实现呢?

例子

function* zip(...arrays) {
let minLength = Math.min(...arrays.map(arr => arr.length));
for (let i = 0; i < minLength; i++) {
yield arrays.map(arr => arr[i]);
}
} let aList = [1, 2, 3]
let bList = ["a", "b", "c"] for (let [a, b] of zip(aList, bList)) {
console.log(a, b)
}

结果

some()和every()

some() 和 every() 方法是很有用的数组方法,它们都是用来遍历数组并返回布尔值。

some() 方法

some() 方法用来检测数组中是否有至少一个元素满足指定条件。当任意一个元素满足条件,则该方法返回 true;否则,返回 false。

例子:

const numbers = [2, 4, 6, 8, 12];
const hasLargeNumber = numbers.some(function(element) {
return element > 10;
}); console.log(hasLargeNumber);

结果



很显然 只要有一个结果满足了 大于10的条件 就返回了true

every() 方法

every() 方法与 some() 方法类似,不过它要求所有元素都满足指定条件。当所有元素都满足条件,则该方法返回 true;否则,返回 false。

例子

const numbers = [2, 4, 6, 8, 12];
const hasLargeNumber = numbers.every(function(element) {
return element > 10;
}); console.log(hasLargeNumber);

结果



很显然 只要有一个结果不满足 大于10的条件 就返回了false 和some方法相反

reduce() 和 reduceRight()

是 JavaScript 数组中常用的两个方法,它们都是用于将数组中的元素归纳为单个值。

它们可以帮助您迭代和聚合数组中的元素

reduce() 方法

reduce() 方法对数组中的每个元素执行一个由您提供的函数,并将其结果汇总为单个返回值。该方法需要传入两个参数:一个回调函数和一个可选的初始值。

const numbers = [1, 2, 3, 4, 5];
//accumulator: 表示当前已经累积的值初始值是0 currentValue 表示当前正在被遍历的数组元素。
const sum = numbers.reduce(function(accumulator, currentValue) {
console.log(accumulator,currentValue)
return accumulator + currentValue;
}, 0); console.log(sum)

结果



accumulator: 表示当前已经累积的值初始值是0 currentValue 表示当前正在被遍历的数组元素。

reduceRight() 方法

reduceRight() 方法与 reduce() 方法类似,不过它是从数组的末尾开始遍历数组并执行回调函数。该方法也需要传入两个参数:一个回调函数和一个可选的初始值。

const numbers = [1, 2, 3, 4, 5];
//accumulator: 表示当前已经累积的值初始值是0 currentValue 表示当前正在被遍历的数组元素。
const sum = numbers.reduceRight(function(accumulator, currentValue) {
console.log(accumulator,currentValue)
return accumulator + currentValue;
}, 0); console.log(sum)

结果



本文地址: https://www.cnblogs.com/zichliang/p/17412968.html

Javascript 常见的循环方式总结的更多相关文章

  1. JavaScript 常见创建对象的方式

    JavaScript 有哪几种创建对象的方式? javascript创建对象简单的说,无非就是使用内置对象或各种自定义对象,当然还可以用JSON:但写法有很多种,也能混合使用. (1)对象字面量的方式 ...

  2. JavaScript常见的继承方式

    原型链机制: 在ECMAscript中描述了原型链的概念,并将原型链作为实现继承的主要方法,其基本思想就是利用原型让一个引用类型继承另一个引用类型的属性和方法. 构造函数和原型还有实例之间的关系: 每 ...

  3. JavaScript常见的输出方式

    1.通过弹窗的形式来输出 alert(需要输出的内容); alert("hello world"); confirm(需要输出的内容); prompt("请输入内容:&q ...

  4. JavaScript 常见的六种继承方式

    JavaScript 常见的六种继承方式 前言 面向对象编程很重要的一个方面,就是对象的继承.A 对象通过继承 B 对象,就能直接拥有 B 对象的所有属性和方法.这对于代码的复用是非常有用的. 大部分 ...

  5. JavaScript常见的六种继承方式

    前言 面向对象编程很重要的一个方面,就是对象的继承.A 对象通过继承 B 对象,就能直接拥有 B 对象的所有属性和方法.这对于代码的复用是非常有用的. 大部分面向对象的编程语言,都是通过"类 ...

  6. 如果要遍历除了for循环,你还知道什么?——JavaScript的各种遍历方式

    如果要遍历除了for循环,你还知道什么?——JavaScript的各种遍历方式 这是曾经面试中的一道题目,当时的我用现在很潮的话讲,整个人是懵比的,我呆呆的说了句,我好像只知道for循环啊.后来回过神 ...

  7. JavaScript常见集合操作

    JavaScript常见集合操作 集合的遍历 FOR循环(效率最高) 优点:JavaScript最普遍的for循环,执行效率最高 缺点:无法遍历对象 for(let i=0;i<array.le ...

  8. 反爬虫:利用ASP.NET MVC的Filter和缓存(入坑出坑) C#中缓存的使用 C#操作redis WPF 控件库——可拖动选项卡的TabControl 【Bootstrap系列】详解Bootstrap-table AutoFac event 和delegate的分别 常见的异步方式async 和 await C# Task用法 c#源码的执行过程

    反爬虫:利用ASP.NET MVC的Filter和缓存(入坑出坑)   背景介绍: 为了平衡社区成员的贡献和索取,一起帮引入了帮帮币.当用户积分(帮帮点)达到一定数额之后,就会“掉落”一定数量的“帮帮 ...

  9. 对javascript EventLoop事件循环机制不一样的理解

    前置知识点: 浏览器原理,浏览器内核5种线程及协作,JS引擎单线程设计推荐阅读: 从浏览器多进程到JS单线程,JS运行机制最全面的一次梳理 [FE]浏览器渲染引擎「内核」 js异步编程,Promise ...

  10. 转:jQuery 常见操作实现方式

    http://www.cnblogs.com/guomingfeng/articles/2038707.html 一个优秀的 JavaScript 框架,一篇 jQuery 常用方法及函数的文章留存备 ...

随机推荐

  1. 基于SpringBoot WebMagic爬虫爬取大乐透双色球

    大乐透网页地址:https://kjh.55128.cn/dlt-history-360.htm 双色球网页地址:https://kjh.55128.cn/ssq-history-120.htm   ...

  2. rosdep初始化顺利进行

    rosdep初始化顺利进行 rosdep初始化需要两条命令 sudo rosdep init rosdep update 但在国内,我们通常会出现因为网络状况访问服务器超时的问题 解决方案就是将资源手 ...

  3. GUI编程--3 Swing

    GUI编程-3 Swing 3.1 JFrame 窗口 窗口: package com.ssl.lesson04; import javax.swing.*; import java.awt.*; p ...

  4. Hyper-V由于虚拟机监控程序未运行

    以管理员权限打开命令提示符 输入bcdedit /set hypervisorlaunchtype Auto 重启计算机

  5. AES算法流程

    明文分组长度: \(128bit\) 密钥长度: \(128bit\) 迭代轮数: \(10轮\) 加密和解密均在\(4*4\)的矩阵上进行,每个格子\(1\)个字节,共\(16\)个字节\(128b ...

  6. 在Vue中发起axios请求成功,却被catch捕捉返回Network Error

    前端发起请求成功,后台接收处理返回,却被axios的catch捕获,没有走then函数. 最后添加了headers配置成功解决,如上,附上axios接口配置中文文档:axios中文文档|axios中文 ...

  7. JMM知识点总结

    JMM知识点总结 一.什么是JMM? 不知道大家在学习的过程有没有思考过这两个问题 为什么说java是跨平台语言 导致并发问题的原因是什么 第一个问题,我是这么理解的,代码运行本质上是将我们写的语言转 ...

  8. Sping Security前后端分离两种方案

    前言 本篇文章是基于Spring Security实现前后端分离登录认证及权限控制的实战,主要包括以下四方面内容: Spring Seciruty简单介绍: 通过Spring Seciruty实现的基 ...

  9. 职场「OKR」,魔幻又内卷

    个人习惯称之为[O-KR-KPI]组合: 01 从进厂实习那天开始,就接触了KPI的概念: 互联网公司,年初入职,可能因为那天是周五,又赶上月底,少不了要把KPI搬出来折腾一番: 天时,地利,人和: ...

  10. day03-搭建微服务基础环境02

    搭建微服务基础环境02 3.创建使用会员微服务模块-service consumer 3.1需求分析 浏览器向service consumer请求某个数据,service consumer会去向ser ...