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直接编辑当前cookie的脚本
Sep 14 Javascript
Javascript继承机制的设计思想分享
Aug 28 Javascript
JavaScript Function函数类型介绍
Apr 08 Javascript
jQuery实现产品对比功能附源码下载
Aug 09 Javascript
JavaScript中常用的验证reg
Oct 13 Javascript
关于ES6的六个小特性(二)
Feb 20 Javascript
微信小程序 wx:for的使用实例详解
Apr 27 Javascript
angular1配合gulp和bower的使用教程
Jan 19 Javascript
深入浅析var,let,const的异同点
Aug 07 Javascript
Vuex 在Vue 组件中获得Vuex 状态state的方法
Aug 27 Javascript
VUE 实现复制内容到剪贴板的两种方法
Apr 24 Javascript
一篇文章看懂JavaScript中的回调
Jan 05 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在线生成ico文件的代码
2007/10/09 PHP
php使用qr生成二维码的示例分享
2014/01/20 PHP
ThinkPHP2.0读取MSSQL提示Incorrect syntax near the keyword 'AS'的解决方法
2014/06/25 PHP
Yii入门教程之目录结构、入口文件及路由设置
2014/11/25 PHP
PHP中创建和验证哈希的简单方法实探
2015/07/06 PHP
php实现和c#一致的DES加密解密实例
2017/07/24 PHP
PHP调用API接口实现天气查询功能的示例
2017/09/21 PHP
TP5框架实现的数据库备份功能示例
2020/04/05 PHP
onmouseover和onmouseout的一些问题思考
2013/08/14 Javascript
JavaScript中判断对象类型的几种方法总结
2013/11/11 Javascript
谷歌浏览器不支持showModalDialog模态对话框的解决方法
2014/09/22 Javascript
javascript事件模型介绍
2016/05/31 Javascript
使用grunt合并压缩js和css文件的方法
2017/03/02 Javascript
jQuery animate()实现背景色渐变效果的处理方法【使用jQuery.color.js插件】
2017/03/15 Javascript
jQuery实现上下滚动公告栏详细代码
2018/11/21 jQuery
Vue.js特性Scoped Slots的浅析
2019/02/20 Javascript
[01:02:38]DOTA2-DPC中国联赛定级赛 LBZS vs Phoenix BO3第二场 1月10日
2021/03/11 DOTA
Python新手实现2048小游戏
2015/03/31 Python
你眼中的Python大牛 应该都有这份书单
2017/10/31 Python
python3 Scrapy爬虫框架ip代理配置的方法
2020/01/17 Python
基于Python共轭梯度法与最速下降法之间的对比
2020/04/02 Python
Python函数参数分类原理详解
2020/05/28 Python
pycharm 添加解释器的方法步骤
2020/08/31 Python
Matplotlib配色之Colormap详解
2021/01/05 Python
利用CSS3实现炫酷的飞机起飞动画
2016/09/17 HTML / CSS
简单几步用纯CSS3实现3D翻转效果
2019/01/17 HTML / CSS
详解如何解决H5开发使用wx.hideMenuItems无效果不生效
2021/01/20 HTML / CSS
大学生求职简历的自我评价
2013/10/14 职场文书
宿舍使用违章电器检讨书
2014/01/12 职场文书
教学实验楼管理制度
2014/02/01 职场文书
趣味比赛活动方案
2014/02/15 职场文书
幼儿园教师师德表现自我评价
2015/03/05 职场文书
药品开票员岗位职责
2015/04/15 职场文书
详解Mysql和Oracle之间的误区
2021/05/18 MySQL
SpringBoot SpringEL表达式的使用
2021/07/25 Java/Android
SQL Server表分区降低运维和维护成本
2022/04/08 SQL Server