循环遍历数组或者对象,for、forEach、for in 、 for of 使用最多

for循环

自Javascript诞生时就有,遍历数组,for 循环的语法如下:

for (语句 1; 语句 2; 语句 3) {

要执行的代码块

}

举例说明

var arr = [1,2,3,4]

for(var i = 0 ; i< arr.length ; i++){

console.log(arr[i]); // 1 2 3 4 (输出结果)

}

forEach循环

从ES5开始 Javascript内置了forEach方法 遍历数组

let arr = ['a', 'b', 'c', 'd']

arr.forEach(function (val, idx, arr) {

console.log(val + ', index = ' + idx) // val是当前元素,index当前元素索引,arr数组

console.log(arr)

})

输出结果

a, index = 0

(4) ["a", "b", "c", "d"]

b, index = 1

(4) ["a", "b", "c", "d"]

c, index = 2

(4) ["a", "b", "c", "d"]

d, index = 3

(4) ["a", "b", "c", "d"]

写法简单了很多,但是也存在一个局限 就是你不能中断循环(使用break语句或使用return语句)。

for in循环

for-in循环实际是为循环”enumerable“对象而设计的

let obj = {a: '1', b: '2', c: '3', d: '4'}

for (let o in obj) {

console.log(o) //遍历的实际上是对象的属性名称 a,b,c,d

console.log(obj[o]) //这个才是属性对应的值1,2,3,4

}

for - in 也可用来循环数组,但一般并不推荐

for of循环

它是ES6中新增加的语法

循环一个数组

let arr = ['China', 'America', 'Korea']

for (let o of arr) {

console.log(o) //China, America, Korea

}

但是它并不能循环一个普通对象

let obj = {a: '1', b: '2', c: '3', d: '4'}

for (let o of obj) {

console.log(o) //Uncaught TypeError: obj[Symbol.iterator] is not a function

}

但是可以循环一个拥有enumerable属性的对象。

如果我们按对象所拥有的属性进行循环,可使用内置的Object.keys()方法

let obj = {a: '1', b: '2', c: '3', d: '4'}

for (let o of Object.keys(obj)) {

console.log(o) // a,b,c,d

}

如果我们按对象所拥有的属性值进行循环,可使用内置的Object.values()方法

let obj = {a: '1', b: '2', c: '3', d: '4'}

for (let o of Object.values(obj)) {

console.log(o) // 1,2,3,4

}

循环一个字符串

let str = 'love'

for (let o of str) {

console.log(o) // l,o,v,e

}

循环一个Map

let iterable = new Map([["a", 1], ["b", 2], ["c", 3]]);

for (let [key, value] of iterable) {

console.log(value);

}

// 1

// 2

// 3

for (let entry of iterable) {

console.log(entry);

}

// [a, 1]

// [b, 2]

// [c, 3]

循环一个Set

let iterable = new Set([1, 1, 2, 2, 3, 3]);

for (let value of iterable) {

console.log(value);

}

// 1

// 2

// 3

循环一个类型化数组

let iterable = new Uint8Array([0x00, 0xff]);

for (let value of iterable) {

console.log(value);

}

// 0

// 255

for、forEach、for in、for of用法的更多相关文章

  1. JS中的 map, filter, some, every, forEach, for in, for of 用法总结和区别

    JS中的 map, filter, some, every, forEach, for in, for of 用法总结和区别  :https://blog.csdn.net/hyupeng1006/a ...

  2. MyBatis从入门到精通(第4章):MyBatis动态SQL【foreach、bind、OGNL用法】

    (第4章):MyBatis动态SQL[foreach.bind.OGNL用法] 4.4 foreach 用法 SQL 语句中有时会使用 IN 关键字,例如 id in (1,2,3).可以使用 ${i ...

  3. c:forEach 标签中varStatus的用法

    c:forEach varStatus属性 current 当前这次迭代的(集合中的)项index  当前这次迭代从 0 开始的迭代索引count  当前这次迭代从 1 开始的迭代计数first 用来 ...

  4. JS中的 map, filter, some, every, forEach, for...in, for...of 用法总结

    1.map 有返回值,返回一个新的数组,每个元素为调用func的结果. let list = [1, 2, 3, 4, 5]; let other = list.map((d, i) => { ...

  5. mybatis 中 foreach collection的三种用法

    foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合. foreach元素的属性主要有 item,index,collection,open,separator,close. ...

  6. [转载]JS中 map, filter, some, every, forEach, for in, for of 用法总结

    转载地址:http://codebay.cn/post/2110.html 1.map 有返回值,返回一个新的数组,每个元素为调用func的结果. let list = [1, 2, 3, 4, 5] ...

  7. mybatis 中 foreach collection的三种用法(转)

    文章转自 https://blog.csdn.net/qq_24084925/article/details/53790287 oreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集 ...

  8. JS中 map, filter, some, every, forEach, for in, for of 用法总结

    本文转载自:http://blog.csdn.net/gis_swb/article/details/52297343 1.map 有返回值,返回一个新的数组,每个元素为调用func的结果. let ...

  9. JSP中forEach和forTokens循环的用法

    <%@page import="java.util.*"%> <%@ page language="java" contentType=&qu ...

  10. PHP中使用foreach时加&符号的用法

    foreach时加&符号:遍历的同时改变原数组即修改数据或者增加数据. $arr = ['a', 'b', 'c']; foreach ($arr as $key => &$va ...

随机推荐

  1. eclipse自动补全导致变量会跟上String后缀的问题解决

    https://blog.csdn.net/feinifi/article/details/103665860

  2. java中Future的使用

    文章目录 创建Future 从Future获取结果 取消Future 多线程环境中运行 java中Future的使用 Future是java 1.5引入的一个interface,可以方便的用于异步结果 ...

  3. js 实现动画功能,完整解析插件版 可更改配置参数[animate.js]

    前言:         本人纯小白一个,有很多地方理解的没有各位大牛那么透彻,如有错误,请各位大牛指出斧正!小弟感激不尽.         本篇文章为您分析一下原生JS写一个运动插件 基本功能: 补充 ...

  4. 自动获取时间html代码

    <button type="button" onclick="document.getElementById('demo').innerHTML = Date()& ...

  5. Node.js快速创建一个访问html文件的服务器

    var http = require('http'), // 引入需要的模块 fs = require('fs'), //引入文件读取模块 cp = require('child_process'), ...

  6. confluence+jira

    /opt/atlassian/confluence/confluence/WEB-INF/lib mysql-connector-java-5.1.7-bin.jar atlassian-extras ...

  7. Gartner:2016 Q2全球服务器市场,中国再度成为亮点

    对于IT产品供应商来说,Gartner.IDC等第三方分析机构市场调研报告无疑是一次"中考",成绩优异的论功行赏,迎接鲜花和掌声:差强人意,批斗会将是不可避免的,接下来加班加点,力 ...

  8. JavaScript实现选择排序

    一.选择排序简介 **冒泡排序.插入排序.选择排序合称为简单排序.**下面是选择排序的思想: 假设有一个数组a,我们想象成有一个班级名叫a班,现在全班随意排成一排,排头的位置是a[0],排尾的位置是a ...

  9. Jenkins 介绍

    持续集成: 持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成.每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证 ...

  10. Linux安装maven(详细教程)

    一.简介 Maven是意第绪语,意思是“知识的积累者”,最初是为了简化Jakarta Turbine项目中的构建过程.有几个项目,每个项目都有自己的Ant构建文件,所有项目都略有不同.JAR已检入CV ...