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 相关文章推荐
脚本之家贴图转换+转贴工具用到的js代码超级推荐
Apr 05 Javascript
Locate a File Using a File Open Dialog Box
Jun 18 Javascript
Js 随机数产生6位数字
May 13 Javascript
浅谈javascript面向对象程序设计
Jan 21 Javascript
浅谈document.write()输出样式
May 07 Javascript
javascript中判断json的方法总结
Aug 27 Javascript
JS与jQ读取xml文件的方法
Dec 08 Javascript
js图片延迟加载(Lazyload)三种实现方式
Mar 01 Javascript
JS原生带小白点轮播图实例讲解
Jul 22 Javascript
Vue0.1的过滤代码如何添加到Vue2.0直接使用
Aug 23 Javascript
React-Native使用Mobx实现购物车功能
Sep 14 Javascript
JavaScript跳出循环的三种方法(break, return, continue)
Jul 30 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格式化金额函数分享
2015/02/02 PHP
php时间计算相关问题小结
2016/05/09 PHP
老生常谈PHP数组函数array_merge(必看篇)
2017/05/25 PHP
tp5框架前台无限极导航菜单类实现方法分析
2020/03/29 PHP
Javascript 解疑
2009/11/11 Javascript
用document.documentElement取代document.body的原因分析
2009/11/12 Javascript
Js 时间间隔计算的函数(间隔天数)
2011/11/15 Javascript
JS给超链接加确认对话框的方法
2015/02/24 Javascript
Java遍历集合方法分析(实现原理、算法性能、适用场合)
2016/04/25 Javascript
javascript汉字拼音互转的简单实例
2016/10/09 Javascript
微信开发之调起摄像头、本地展示图片、上传下载图片实例
2016/12/08 Javascript
AngulerJS学习之按需动态加载文件
2017/02/13 Javascript
AngularJS自定义指令详解(有分页插件代码)
2017/06/12 Javascript
vue中appear的用法
2017/08/17 Javascript
webpack源码之loader机制详解
2018/04/06 Javascript
关于vue 项目中浏览器跨域的配置问题
2020/11/10 Javascript
Python 文件管理实例详解
2015/11/10 Python
python3使用smtplib实现发送邮件功能
2018/05/22 Python
使用Python处理BAM的方法
2018/09/28 Python
Python面向对象之类和对象属性的增删改查操作示例
2018/12/14 Python
在Python中使用filter去除列表中值为假及空字符串的例子
2019/11/18 Python
Python unittest框架操作实例解析
2020/04/13 Python
Python Tornado核心及相关原理详解
2020/06/24 Python
TheFork葡萄牙:欧洲领先的在线餐厅预订平台
2019/05/27 全球购物
Fossil德国官网:化石手表、手袋、珠宝及配件
2019/12/07 全球购物
方正Java笔试题
2014/07/03 面试题
策划主管的工作职责
2013/11/24 职场文书
理工类毕业自我鉴定
2014/02/20 职场文书
市场营销方案范文
2014/03/11 职场文书
卫生厅领导班子党的群众路线教育实践活动整改措施
2014/09/20 职场文书
领导班子对照检查材料
2014/09/22 职场文书
乡镇党员干部四风对照检查材料思想汇报
2014/09/27 职场文书
教师求职信怎么写
2015/03/20 职场文书
2015年秋季小学开学标语
2015/07/16 职场文书
详解RedisTemplate下Redis分布式锁引发的系列问题
2021/04/27 Redis
postgresql之greenplum字符串去重拼接方式
2023/05/08 PostgreSQL