JavaScript 中的六种循环方法


Posted in Javascript onJanuary 06, 2021

Javascript中的遍历循环

1.for循环

对于数值索引的数组来说,可以使用标准的for循环来遍历值

const arr=[1,2,3,4];
for(let i=0;i<arr.length;i++){
  console.log(i);
}

2.for...in循环

for...in循环可以用来遍历对象的可枚举属性列表(包括原型链上的属性)

const myObject={};

Object.defineProperty(myobject,"a",{
  //可枚举
	enumerable:true,
  value:2,
})
Object.defineProperty(myobject,"b",{
  //不可枚举
	enumerable:false,
  value:2,
})

for(let k in myObject){
  console.log(k,myObject[k])
	// a 2
}
//使用for...in循环是无法直接获得属性值的,因为它实际遍历的是对象中的所有可枚举属性,
//所以你需要手动获得属性值.

在数组上应用for...in循环,不仅仅会包含所有数值索引,还会包含所有可枚举属性.

所以最好在对象上应用for...in循环。如果要遍历数组最好使用传统的for循环来遍历.

3.for...of循环

1.ES6新增的for...of循环

const arr=[1,2,3];
for(let value of arr){
  console.log(value)
  //1
  //2
  //3
}

for...of循环首先会向所有被访问的对象请求一个迭代器对象,然后通过调用迭代器对象的next()方法来遍历所有返回值

在数组中有内置的@@iterator,因此for...of可以直接应用在数组上。

使用内置的@@iterator遍历数组

const arr=[1,2,3];
//获取数组中的iterator对象:使用ES6中的符号Symbol.iterator来获取对象的@@iteraotr内部属性.
//@@iterator本身不是一个迭代器,而是一个返回迭代器对象的函数。
const it=arr[Symbol.iterator]();

it.next(); //{value:1,done:false}
it.next(); //{value:2,done:false}
it.next(); //{value:3,done:false}
it.next(); //{done:true}

//调用迭代器的next()方法会返回形式为{value:..,done:..}的值;
//value为当前的值,done是一个布尔值,表示是否还存在可以遍历的值

2.给对象定义@@iterator

const myObject={
  a:2,
  b:3
}
Object.defineProperty(myObject,Symbol.iterator,{
	enumerable:false,
  writeable:false,
  configurable:true,
  value:function(){
    let o=this;
    let idx=0;
    //对象中的属性数组
    let ks=Object.keys(o);
    return{
      value:o[ks[idx++]],
      done:(idx>ks.length);
    }
  }
})

const it=myObject[Symbol.iterator]();
it.next(); //{value:2,done:false}
it.next(); //{value:3,done:false}
it.next(); //{done:true}


for(let value of myObject){
	console.log(value);
}
// 2
// 3

4.foreach(...)

**forEach()** 方法对数组的每个元素执行一次给定的函数。

const arr = ['a', 'b', 'c'];
arr.forEach(element => console.log(element));
// a
// b
// c
arr.forEach(callback(currentValue [,index [,array]])[,thisArg])

5.some(...)

some()是对数组中每一项运行给定函数,如果该函数对任一项返回true,则返回true。

var arr = [ 1, 2, 3, 4, 5, 6 ]; 
 
console.log( arr.some( function( item, index, array ){ 
  console.log( 'item=' + item + ',index='+index+',array='+array ); 
  return item > 3; 
})); 
// item=1,index=0,array=1,2,3,4,5,6
// item=2,index=1,array=1,2,3,4,5,6
// item=3,index=2,array=1,2,3,4,5,6
// item=4,index=3,array=1,2,3,4,5,6
// true

6.every(...)

every()是对数组中每一项运行给定函数,如果该函数对每一项返回true,则返回true。

var arr = [ 1, 2, 3, 4, 5, 6 ]; 

console.log( arr.every( function( item, index, array ){ 
  console.log( 'item=' + item + ',index='+index+',array='+array ); 
  return item > 3; 
}));
// item=1,index=0,array=1,2,3,4,5,6
// false

以上就是JavaScript 中的六种循环方法的详细内容,更多关于JavaScript 循环的资料请关注三水点靠木其它相关文章!

Javascript 相关文章推荐
用jQuery简化JavaScript开发分析
Feb 19 Javascript
js 全兼容可高亮二级缓冲折叠菜单
Jun 04 Javascript
基于Jquery的淡入淡出的特效基础练习
Dec 13 Javascript
node.js中的fs.fsyncSync方法使用说明
Dec 15 Javascript
Node.js获取前端ajax提交的request信息
Feb 20 Javascript
为Jquery EasyUI 组件加上清除功能的方法(详解)
Apr 13 jQuery
jQuery 改变P标签文本值方法
Feb 24 jQuery
Vue兼容ie9的问题全面解决方案
Jun 19 Javascript
微信小程序实现禁止分享代码实例
Oct 19 Javascript
vue实现图片上传预览功能
Dec 23 Javascript
vue实现带过渡效果的下拉菜单功能
Feb 19 Javascript
部署vue+Springboot前后端分离项目的步骤实现
May 31 Javascript
JavaScript的一些小技巧分享
Jan 06 #Javascript
详解Vue2的diff算法
Jan 06 #Vue.js
如何利用JavaScript编写一个格斗小游戏
Jan 06 #Javascript
vuex的使用步骤
Jan 06 #Vue.js
一篇文章看懂JavaScript中的回调
Jan 05 #Javascript
原生js中运算符及流程控制示例详解
Jan 05 #Javascript
vue3.0中友好使用antdv示例详解
Jan 05 #Vue.js
You might like
phpMyAdmin 链接表的附加功能尚未激活的问题
2010/08/01 PHP
php页面,mysql数据库转utf-8乱码,utf-8编码问题总结
2015/08/27 PHP
PHP图片加水印实现方法
2016/05/06 PHP
创建一个复制UBB软件信息的链接或按钮的js代码
2008/01/06 Javascript
分享28款免费实用的 JQuery 图片和内容滑块插件
2014/12/15 Javascript
浅谈JavaScript数据类型
2015/03/03 Javascript
JS实现表单中checkbox对勾选中增加边框显示效果
2015/08/21 Javascript
论Bootstrap3和Foundation5网格系统的异同
2016/05/16 Javascript
解决JS表单验证只有第一个IF起作用的问题
2018/12/04 Javascript
[02:36]DOTA2英雄基础教程 帕格纳
2014/01/20 DOTA
Python实现的检测网站挂马程序
2014/11/30 Python
Django实现的自定义访问日志模块示例
2017/06/23 Python
python学习必备知识汇总
2017/09/08 Python
Python实现ping指定IP的示例
2018/06/04 Python
python下载库的步骤方法
2019/10/12 Python
python实现人机五子棋
2020/03/25 Python
用Python制作mini翻译器的实现示例
2020/08/17 Python
canvas 阴影和图形变换的示例代码
2018/01/02 HTML / CSS
高中毕业自我鉴定
2013/12/16 职场文书
酒店总经理欢迎词
2014/01/08 职场文书
化学教师教学反思
2014/01/17 职场文书
优秀团员个人事迹材料
2014/01/29 职场文书
寄语十八大感言
2014/02/07 职场文书
春季运动会广播稿大全
2014/02/19 职场文书
静心口服夜广告词
2014/03/20 职场文书
会计求职信
2014/05/29 职场文书
单位授权委托书范文
2014/08/02 职场文书
医药销售自我评价200字
2014/09/11 职场文书
2014年保密工作总结
2014/11/22 职场文书
2014公司年终工作总结
2014/12/19 职场文书
优秀教研组申报材料
2014/12/26 职场文书
客户答谢会致辞
2015/01/20 职场文书
食品安全责任书范本
2015/05/09 职场文书
分析Python list操作为什么会错误
2021/11/17 Python
MySQL 语句执行顺序举例解析
2022/06/05 MySQL
win10壁纸在哪个文件夹 win10桌面背景图片文件位置分享
2022/08/05 数码科技