一、循环遍历语句

for...in... (ES5)

语法javascript for(keys in obj){}

适用:遍历对象

说明

  1.keys表示obj对象的每一个键值对的键(键名),所有循环中,需要使用obj[keys]来取到每一个值。

  2.for-in 循环,遍历时不仅能读取对象自身上面的成员属性,也能延续原型链遍历出对象的原型属性

  3.使用hasOwnProperty判断一个属性是不是对象自身上的属性。obj.hasOwnProperty(keys)==true 表示这个属性是对象的成员属性,而不是原型属性

for...of... (ES6)

语法javascript for(keys of xxx){}

适用:数组、Set和Map结构、某些类似数组的对象(比如arguments对象、DOM NodeList 对象)、Generator 对象,以及字符串

说明:ES6 借鉴 C++、Java、C# 和 Python 语言,引入了for...of循环,作为遍历所有数据结构的统一的方法。

 一个数据结构只要部署了Symbol.iterator属性,就被视为具有iterator接口,就可以用for...of循环遍历它的成员。

也就是说,for...of循环内部调用的是数据结构的Symbol.iterator方法。

 

其他

for (let [key,value] of Object.entries(obj))

for (let key of Object.keys(obj))

for (let key of Object.values(obj))

1.Object.keys()

返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历( enumerable )属性的键名

2.Object.values()

返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历( enumerable )属性的键值

3.Object.entries()

返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历( enumerable )属性的键值对数组

forEach (ES5)

语法javascript [].forEach(callbackfn[, thisArg])

适用: 遍历数组,不改变原数组

说明:对数组里存在的每个元素调用一次 callbackfn。callbackfn 只被实际存在的数组元素调用;它不会被缺少的数组元素调用。

如果提供了一个 thisArg 参数,它会被当作 this 值传给每个 callbackfn 调用。如果没提供它,用 undefined 替代。

callbackfn参数,分别为值、下标、数组本身

[].forEach(function(value, index, array) {
// ...
});

对比jQuery中的$.each方法:

$.each([], function(index, value, array) {
// ...
});

缺点:

  1. 不能使用break语句中断循环
  2. 不能使用return语句返回到外层函数

map (ES5)

语法javascript [].map(callbackfn[, thisArg]);

说明:map方法可以返回一个处理过的新数组,不改变原数组

callbackfn参数,分别为值、下标、数组本身

[].map(function(value, index, array) {
// ...
return .....
});

二、比较

for...in缺点

  ①数组的键名是数字,但是for...in循环是以字符串作为键名“0”、“1”、“2”等等。

  ②不仅遍历数字键名,还会遍历手动添加的其他键,甚至包括原型链上的键。

  ③某些情况下,会以任意顺序遍历键名,主要是为遍历对象而设计的,不适用于遍历数组。

for...of优点

  ①有着同for...in一样的简洁语法,但是没有for...in那些缺点。

  ②不同于forEach方法,它可以与break、continue和return配合使用。

  ③提供了遍历所有数据结构的统一操作接口。

三、循环控制语句

1、break:跳出本层循环,继续执行循环结构后面的语句。如果循环有多层,则break只能跳出一层。

2、continue:跳过本次循环剩余的代码,跳转到表达式处进行下一次的循环判断,继续执行下一次循环。

   ①对与for循环,continue之后执行的语句,是循环变量更新语句i++;

   ②对于while、do-while循环,continue之后执行的语句,是循环条件判断;

   因此,使用这两个循环时,必须将continue放到i++之后使用,否则,continue将跳过i++进入死循环

3、return:在程序(函数)中遇到return语句,那么代码就退出该函数的执行,返回到函数的调用处;如果是主程序(main()),那么结束整个程序的运行。

4、exit: 其他语言中使用,如C、C++等。调用exit()函数将会结束当前进程,同时删除子进程所占用的内存空间,把返回信息传给父进程。

当exit()中的参数为0时,表示正常退出,其他返回值表示非正常退出,执行exit()函数意味着进程结束;

而return仅表示调用堆栈的返回,其作用是返回函数值,并且退出当前执行的函数体,返回到函数的调用处,

在main()函数中, return n和exit(n)是等价的。

JS 循环遍历 总结的更多相关文章

  1. JS 循环遍历JSON数据 分类: JS技术 JS JQuery 2010-12-01 13:56 43646人阅读 评论(5) 收藏 举报 jsonc JSON数据如:{"options":"[{

    JS 循环遍历JSON数据 分类: JS技术 JS JQuery2010-12-01 13:56 43646人阅读 评论(5) 收藏 举报 jsonc JSON数据如:{"options&q ...

  2. vue组件,vue补充和总结,JS循环遍历和加减运算、类型转换补充

    目录 一.vue中的组件 1. 组件的概念 2. 组件分类 3. 组件的特点 4. 组件的定义 5. 组件化 (1)用法和注意 (2)数据组件化实例 6. 组件传参--父传子 (1)用法和注意 (2) ...

  3. js循环遍历数组

    一维数组的遍历 <script> //循环遍历数组 var animals = ["cat",'dog','human','whale','seal']; var an ...

  4. js循环遍历的两种方法for循环和for ... in 循环

    JS数组的遍历方法有两种: 第一种:一般的for循环,例如: var a = new Array("first", "second", "third& ...

  5. js循环遍历数组(对象)

    1,for循环 对于循环应该是最常用的一种遍历方式了,通常用来遍历数组结构. let arr = [a,b,d];for (let i=0; i<arr.length; i++){ consol ...

  6. JS 循环遍历JSON数据

    JSON数据如:{"options":"[{/"text/":/"王家湾/",/"value/":/" ...

  7. js循环遍历弹框,先弹出第一个之后逐步弹出第二个。。

    var data = [{ "login_advertTitle": "即使生活琐碎,也要活得优雅", "login_advertCont" ...

  8. JS循环遍历JSON数据的方法

    JSON数据如:{"options":"[{/"text/":/"王家湾/",/"value/":/" ...

  9. js循环遍历性能

    定length for循环 (有length) 不定length for循环(使用数组length) 不定length for循环(判断数组length是否存在) forEach(Array自带,对某 ...

随机推荐

  1. dvm 的进程和 Linux 的进程, 应用程序的进程是否为同一个概念?

    dvm 指 dalvik 的虚拟机. 每一个 Android 应用程序都拥有一个独立的 Dalvik 虚拟机实例,应用程序都在它自己的进程中运行.而每一个 dvm 都是在 Linux 中的一个进程,所 ...

  2. 代码实现:输入3个数a,b,c,按大小顺序输出。

    import java.util.Arrays; import java.util.Scanner; //输入3个数a,b,c,按大小顺序输出. public class Test34 { publi ...

  3. jenkins docker 发布

    分享下怎么使用jenkins 发布 docker   首先准备docker的相关部分 docker tomcat基础镜像,这边使用centos7做系统,dockerfile如下: #tomcat基础镜 ...

  4. React 事件对象、键盘事件、表单事件、ref获取dom节点、react实现类似Vue双向数据绑定

    1.案例实现代码 import React, { Component } from 'react'; /** * 事件对象.键盘事件.表单事件.ref获取dom节点.react实现类似Vue双向数据绑 ...

  5. linux(centOS7)的基本操作(三) 用户、组、权限管理

    用户和组 1.用户.组.家目录的概念 linux系统支持多用户,除了管理员,其他用户一般不应该使用root,而是应该向管理员申请一个账号.组类似于角色,系统可以通过组对有共性的用户进行统一管理.每个用 ...

  6. office 安装破解

    1. 打开Office Tool Plus.exe部署 2. 添加产品 `excel` `prowerpoint` `word` 3. 选择安装文件管理 选择下载安装 4.安装完成后点击开始部署 5. ...

  7. 三十四:数据库之SQLAlchemy外建及四种约束

    使用SQLAlchemy创建外建,只需要在子表的字段中指定此字段的外建是哪个表的哪个字段即可,字段类型需和父表下该字段的类型保持一致 使用ondelete指定约束, 外建约束有以下几种:1.RESTR ...

  8. Maven 安装 / 常用配置 / 阿里maven中央仓库

    Maven 官方下载地址: http://maven.apache.org/download.cgi 可以选择清华的镜像: 解压在settings.xml里面配置阿里中央仓库: <mirror& ...

  9. Java 并发编程:核心理论(一)

    前言......... 并发编程是Java程序员最重要的技能之一,也是最难掌握的一种技能.它要求编程者对计算机最底层的运作原理有深刻的理解,同时要求编程者逻辑清晰.思维缜密,这样才能写出高效.安全.可 ...

  10. sql回显注入-笔记

     拼接sql命令查询数据   注释 常用于sql注入            # 井号 单行注释 注意:URL编码 %23          -- 两个减号加空格 单行注释           /*   ...