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 相关文章推荐
javascript Xml增删改查(IE下)操作实现代码
Jan 30 Javascript
前端开发的开始---基于面向对象的Ajax类
Sep 17 Javascript
JQuery小知识
Oct 15 Javascript
javascript 10进制和62进制的相互转换
Jul 31 Javascript
jquery解决客户端跨域访问问题
Jan 06 Javascript
js学习阶段总结(必看篇)
Jun 16 Javascript
Angular2生命周期钩子函数的详细介绍
Jul 10 Javascript
Axios学习笔记之使用方法教程
Jul 21 Javascript
详述 Sublime Text 打开 GBK 格式中文乱码的解决方法
Oct 26 Javascript
详解vue静态资源打包中的坑与解决方案
Feb 05 Javascript
详解三种方式解决vue中v-html元素中标签样式
Nov 22 Javascript
pm2启动ssr失败的解决方法
Jun 29 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
PHP 数据库树的遍历方法
2009/02/06 PHP
php simplexmlElement操作xml的命名空间实现代码
2011/01/04 PHP
php实现将数组转换为XML的方法
2015/03/09 PHP
CI框架无限级分类+递归的实现代码
2016/11/01 PHP
Laravel中服务提供者和门面模式的入门介绍
2017/11/06 PHP
Laravel核心解读之异常处理的实践过程
2019/02/24 PHP
了解jQuery技巧来提高你的代码
2010/01/08 Javascript
JavaScript高级程序设计 客户端存储学习笔记
2011/09/10 Javascript
JQuery加载图片自适应固定大小的DIV
2013/09/12 Javascript
JavaScript实现获取某个元素相邻兄弟节点的prev与next方法
2016/01/25 Javascript
Bootstrap页面缩小变形的快速解决办法
2017/02/03 Javascript
jQuery插件HighCharts绘制2D圆环图效果示例【附demo源码下载】
2017/03/09 Javascript
vue 每次渲染完页面后div的滚动条保持在最底部的方法
2018/03/17 Javascript
Vue 使用计时器实现跑马灯效果的实例代码
2019/07/11 Javascript
微信小程序可滑动月日历组件使用详解
2019/10/21 Javascript
js实现时钟定时器
2020/03/26 Javascript
vue中实现点击空白区域关闭弹窗的两种方法
2020/12/30 Vue.js
[02:03]永远的信仰DOTA2 中国军团历届国际邀请赛回顾
2016/06/26 DOTA
[01:18:35]DOTA2-DPC中国联赛 正赛 Elephant vs LBZS BO3 第一场 1月29日
2021/03/11 DOTA
[51:39]DOTA2-DPC中国联赛 正赛 Magma vs LBZS BO3 第二场 2月7日
2021/03/11 DOTA
跟老齐学Python之做一个小游戏
2014/09/28 Python
使用Python脚本来控制Windows Azure的简单教程
2015/04/16 Python
python实现输入数字的连续加减方法
2018/06/22 Python
python游戏开发之视频转彩色字符动画
2019/04/26 Python
Django利用cookie保存用户登录信息的简单实现方法
2019/05/27 Python
matplotlib绘制鼠标的十字光标的实现(内置方式)
2021/01/06 Python
详解Python 中的 defaultdict 数据类型
2021/02/22 Python
关于探究python中sys.argv时遇到的问题详解
2021/02/23 Python
野兽派官方旗舰店:THE BEAST 野兽派
2016/08/05 全球购物
String和StringBuffer的区别
2015/08/13 面试题
优秀乡村医生事迹材料
2014/05/28 职场文书
优秀实习生主要事迹
2014/05/29 职场文书
学校班班通实施方案
2014/06/11 职场文书
购房个人委托书范本
2014/10/11 职场文书
社区学习党的群众路线教育实践活动心得体会
2014/11/03 职场文书
从事会计工作年限证明
2015/06/23 职场文书