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基本概念初级讲解论坛贴的学习记录
Feb 22 Javascript
Js数组排序函数sort()介绍
Jun 08 Javascript
jQuery插件之jQuery.Form.js用法实例分析(附demo示例源码)
Jan 04 Javascript
node-http-proxy修改响应结果实例代码
Jun 06 Javascript
jQuery之简单的表单验证实例
Jul 07 Javascript
AngularJS bootstrap启动详解及实例代码
Sep 14 Javascript
Bootstrap按钮功能之查询按钮和重置按钮
Oct 26 Javascript
Vue 2.X的状态管理vuex记录详解
Mar 23 Javascript
angularjs路由传值$routeParams详解
Sep 05 Javascript
解析Vue.js中的组件
Feb 02 Javascript
node.js部署之启动后台运行forever的方法
May 23 Javascript
jQuery实现获取多选框的值示例
Feb 07 jQuery
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录入页面中动态从数据库中提取数据的实现
2006/10/09 PHP
php中ob(Output Buffer 输出缓冲)函数使用方法
2007/07/21 PHP
使用openssl实现rsa非对称加密算法示例
2014/01/24 PHP
PHP文件上传处理案例分析
2016/10/15 PHP
YII框架学习笔记之命名空间、操作响应与视图操作示例
2019/04/30 PHP
免费空间广告万能消除代码
2006/09/04 Javascript
extJs 常用到的增,删,改,查操作代码
2009/12/28 Javascript
jquery 年会抽奖程序
2011/12/22 Javascript
在firefox和Chrome下关闭浏览器窗口无效的解决方法
2014/01/16 Javascript
iframe里的页面禁止右键事件的方法
2014/06/10 Javascript
鼠标悬浮停留三秒后自动显示大图js代码
2014/09/09 Javascript
使用JavaScript获取地址栏参数的方法
2014/12/19 Javascript
JS判断字符串包含的方法
2015/05/05 Javascript
详解AngularJS中的依赖注入机制
2015/06/17 Javascript
jquery+css实现动感的图片切换效果
2015/11/25 Javascript
ECharts地图绘制和钻取简易接口详解
2019/07/12 Javascript
vue-resource:jsonp请求百度搜索的接口示例
2019/11/09 Javascript
浅析vue cli3 封装Svgicon组件正确姿势(推荐)
2020/04/27 Javascript
深入浅析vue全局环境变量和模式
2020/04/28 Javascript
JavaScript获取时区实现过程解析
2020/09/24 Javascript
[52:52]DOTA2上海特级锦标赛C组资格赛#1 OG VS LGD第三局
2016/02/27 DOTA
python实现字符串和日期相互转换的方法
2015/05/13 Python
Python中 Lambda表达式全面解析
2016/11/28 Python
python中利用xml.dom模块解析xml的方法教程
2017/05/24 Python
Python格式化输出字符串方法小结【%与format】
2018/10/29 Python
python 如何快速复制序列
2020/09/07 Python
教你使用Sublime text3搭建Python开发环境及常用插件安装另分享Sublime text3最新激活注册码
2020/11/12 Python
html2canvas生成清晰的图片实现打印的示例代码
2019/09/30 HTML / CSS
大学新学期计划书
2014/04/28 职场文书
市场营销专业求职信
2014/06/17 职场文书
八项规定个人对照检查材料思想汇报
2014/09/25 职场文书
机关班子查摆问题及整改措施
2014/10/28 职场文书
2014年乡镇卫生院工作总结
2014/11/24 职场文书
党支部承诺书
2015/01/20 职场文书
2016教师廉洁从教心得体会
2016/01/13 职场文书
一篇合格的广告文案,其主要目的是什么?
2019/07/12 职场文书