for ,foreach ,map 循环的区别 - 神靖希希

sjxx 2021-08-21 原文


for ,foreach ,map 循环的区别


一、for循环

1、for – 循环代码块一定的次数

 遍历数组最常用到的for循环,是最为熟知的一种方法

for (var i=0; i<5; i++)
  {
  x=x + "The number is " + i + "<br>";
  }

从上面的例子中,可以看到:

Statement 1 在循环开始之前设置变量 (var i=0)。

Statement 2 定义循环运行的条件(i 必须小于 5)。

Statement 3 在每次代码块已被执行后增加一个值 (i++)。

 

2、for/in – 循环遍历对象的属性

var person={fname:"John",lname:"Doe",age:25};

for (x in person)
  {
  txt=txt + person[x];
  }

3、while – 当指定的条件为 true 时循环指定的代码块

如果忘记增加条件中所用变量的值,该循环永远不会结束

while (i<5)
  {
  x=x + "The number is " + i + "<br>";
  i++;
  }

4、do/while – 同样当指定的条件为 true 时循环指定的代码块

do/while 循环是 while 循环的变体。该循环会执行一次代码块,在检查条件是否为真之前,然后如果条件为真的话,就会重复这个循环。循环至少会执行一次,即使条件是 false,隐藏代码块会在条件被测试前执行

do
  {
  x=x + "The number is " + i + "<br>";
  i++;
  }
while (i<5);

二、foreach 用于调用数组的每个元素,并将元素传递给回调函数。注意: forEach() 对于空数组是不会执行回调函数的。

array.forEach(function(currentValue, index, arr), thisValue)
currentValue:必需。当前元素
index:可选。当前元素的索引值。
arr:可选。当前元素所属的数组对象。
thisValue:可选。传递给函数的值一般用 "this" 值。
如果这个参数为空, "undefined" 会传递给 "this" 值

#for  和  foreach 的总结

三、map

.map(callback(index,domElement))

.map()要比.forEach()执行速度更快。虽然我也说过执行速度不是我们需要考虑的主要因素,但是他们都比for()要更好用,那肯定要选更优化的一个,但是map()方法不会对空数组进行检测。

第二,.forEach()的返回值并不是array

var arr = [1, 2, 3];

console.log(
    arr.map(function(i){
        return i+i;
    })
    //链式风格
    .sort()
);// [2,4,6]

console.log(
    arr.forEach(function(i){
        return i+i;
    })
    //接不起来,断了
    .sort()
);//TypeError: Cannot read property \'sort\' of undefined
  • map:和forEach非常相似,都是用来遍历数组中的每一项值的,用来遍历数组中的每一项;
  • 区别:map的回调函数中支持return返回值;return的是啥,相当于把数组中的这一项变为啥(并不影响原来的数组,只是相当于把原数组克隆一份,把克隆的这一份的数组中的对应项改变了);
  • 不管是forEach还是map 都支持第二个参数值,第二个参数的意思是把匿名回调函数中的this进行修改。

#map 和 foreach的总结

1、map速度比foreach快

2、map会返回一个新数组,不对原数组产生影响,foreach不会产生新数组,

3、map因为返回数组所以可以链式操作,foreach不能

 

发表于
2017-08-22 11:16 
神靖希希 
阅读(3463
评论(0
编辑 
收藏 
举报

 

版权声明:本文为sjxx原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/sjxx/p/7410710.html

for ,foreach ,map 循环的区别 - 神靖希希的更多相关文章

  1. 提取图片中的文字 – ruinet

    提取图片中的文字 2007-04-20 10:25  ruinet  阅读(826)  评论(0)  编辑  […]...

  2. 联想硬盘分区表格式修改 GPT -> MBR

    知识点分析:随机预装Win8的电脑,磁盘为GPT格式的,如果需要安装Win7等早期版本系统,需要转换为MBR格 […]...

  3. PS – 调整图片大小快捷键

    ctrl + alt + i...

  4. 【转】使用Eclipse搭建Python开发环境 – NorthernGirl

    【转】使用Eclipse搭建Python开发环境 因为要进行自动化测试,所以要搭建Python开发环境.这里将 […]...

  5. Web —— java web 项目 Tomcat 的配置 与 第一个web 项目创建

    目录 前言 Tomcat的配置 第一个Web 项目 1、前言   刚刚开始接触web开发,了解的也不多,在这里 […]...

  6. Div垂直居中水平居中 – Wuqh

    以下为让div显示在浏览器正中间的样式<style type=”text/css” […]...

  7. 友盟+数据技术专家4000字数据智能平台搭建实战笔记 – 友盟全域数据

    作者:友盟+数据技术专家 谭纯   简介: 2020年注定是不同寻常的,突如其来的疫情按下了人们生活的暂停键。 […]...

  8. JDK和JRE的区别 – Nuke\’Blog

    Path —-外部命令搜索路径。 CLASSPATH —-类资源位置搜索路径。   在 […]...

随机推荐

  1. SSD的SLC MLC 和TLC哪个好?

    <1>SLC = Single-Level Cell ,即1bit/cell,速度快寿命长,价格超 […]...

  2. 《三体2:黑暗森林》总结

    目录 面壁人计划 两条公理 两个概念 水滴战争 黑暗森林法则 这么震撼的小说,值得输出一下,看完感觉就是:卧槽 […]...

  3. 背包问题(01背包,完全背包,多重背包(朴素算法&&二进制优化))

    写在前面:我是一只蒟蒻~~~ 今天我们要讲讲动态规划中最最最最最简单的背包问题 1. 首先,我们先介绍一下   […]...

  4. 手机优秀app – empireghost

    手机优秀app       Mantano 阅读器  Aldiko   阅读器  掌阅阅读器 奇特阅读器 Gi […]...

  5. dubbo 官方参考手册~备案(防止哪天阿里一生气把dubbo给删除了)

            首页  ||  下载  ||  用户指南  ||  开发者指南  ||  管理员指南  ||  […]...

  6. .NET Framework 4.7.2 离线安装包官方

      官方直接下载链接: https://download.microsoft.com/download/6/E […]...

  7. Windows 8.1 操作系统常用快捷键

    安装了 windows 8.1 有一段时间了,刚使用时有点儿不太习惯,后面知道了一些常用快捷键后,使用起来习惯 […]...

  8. 云服务器ECS

    什么是阿里云云服务器ECS,以及它所涉及的资源和服务   云服务器Elastic Compute Servic […]...

展开目录

目录导航