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为页面添加天气显示实现思路及代码
Dec 02 Javascript
DOM基础教程之使用DOM
Jan 19 Javascript
DOM事件阶段以及事件捕获与事件冒泡先后执行顺序(图文详解)
Aug 18 Javascript
JS跨域交互(jQuery+php)之jsonp使用心得
Jul 01 Javascript
JS绘制微信小程序画布时钟
Dec 24 Javascript
angularjs实现猜大小功能
Oct 23 Javascript
详解基于Vue-cli搭建的项目如何和后台交互
Jun 29 Javascript
详解JSON和JSONP劫持以及解决方法
Mar 08 Javascript
微信小程序如何使用canvas二维码保存至手机相册
Jul 15 Javascript
Javascript组合继承方法代码实例解析
Apr 02 Javascript
vue下canvas裁剪图片实例讲解
Apr 16 Javascript
类和原型的设计模式之复制与委托差异
Jul 07 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网上调查系统
2006/10/09 PHP
php_screw 1.5:php加密: 安装与使用详解
2013/06/20 PHP
Laravel框架中扩展函数、扩展自定义类的方法
2014/09/04 PHP
PHP 中魔术常量的实例详解
2017/10/26 PHP
Thinkphp 框架扩展之Widget扩展实现方法分析
2020/04/23 PHP
Thinkphp5框架中引入Markdown编辑器操作示例
2020/06/03 PHP
从javascript语言本身谈项目实战
2006/12/27 Javascript
JavaScript 编程引入命名空间的方法与代码
2007/08/13 Javascript
jQuery 浮动广告实现代码
2008/12/25 Javascript
JavaScript Math.ceil() 函数使用介绍
2013/12/11 Javascript
jQuery根据元素值删除数组元素的方法
2015/06/24 Javascript
JS实现带关闭功能的阿里妈妈网站顶部滑出banner工具条代码
2015/09/17 Javascript
jQuery-1.9.1源码分析系列(十)事件系统之事件包装
2015/11/20 Javascript
jQuery加载及解析XML文件的方法实例分析
2017/01/22 Javascript
JS实现图片放大镜插件详解
2017/11/06 Javascript
vue-cli 打包使用history模式的后端配置实例
2018/09/20 Javascript
详解JQuery基础动画操作
2019/04/12 jQuery
基于Proxy的小程序状态管理实现
2019/06/14 Javascript
JavaScript JSON数据处理全集(小结)
2019/08/15 Javascript
vue 动态表单开发方法案例详解
2019/12/02 Javascript
详解Python pygame安装过程笔记
2017/06/05 Python
CentOS下使用yum安装python-pip失败的完美解决方法
2017/08/16 Python
python 简单搭建阻塞式单进程,多进程,多线程服务的实例
2017/11/01 Python
Request的中断和ErrorHandler实例解析
2018/02/12 Python
Python hashlib模块用法实例分析
2018/06/12 Python
对python内置map和six.moves.map的区别详解
2018/12/19 Python
Tensorflow 自定义loss的情况下初始化部分变量方式
2020/01/06 Python
python识别验证码图片实例详解
2020/02/17 Python
解决python Jupyter不能导入外部包问题
2020/04/15 Python
Python基于pandas爬取网页表格数据
2020/05/11 Python
加拿大时尚少女服装品牌:Garage
2016/10/10 全球购物
2014年三八妇女节活动方案
2014/02/28 职场文书
个人租房协议书
2014/11/28 职场文书
2015年大学教师工作总结
2015/05/20 职场文书
答辩状格式范本
2015/05/22 职场文书
学校学期工作总结
2015/08/13 职场文书