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 面向对象编程 聊聊对象的事
Sep 17 Javascript
js读取csv文件并使用json显示出来
Jan 09 Javascript
JavaScript中的toDateString()方法使用详解
Jun 12 Javascript
javascript实现的登陆遮罩效果汇总
Nov 09 Javascript
BootStrap学习系列之布局组件(下拉,按钮组[toolbar],上拉)
Jan 03 Javascript
vue构建单页面应用实战
Apr 10 Javascript
jQuery动态追加页面数据以及事件委托详解
May 06 jQuery
微信小程序之批量上传并压缩图片的实例代码
Jul 05 Javascript
JS实现灯泡开关特效
Mar 30 Javascript
如何在Vue中抽离接口配置文件
Oct 31 Javascript
微信小程序实现列表的横向滑动方式
Jul 15 Javascript
vue-simple-uploader上传成功之后的response获取代码
Sep 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
py文件转exe时包含paramiko模块出错解决方法
2016/08/12 PHP
php中序列化与反序列化详解
2017/02/13 PHP
PHP通过GD库实现验证码功能示例
2019/02/23 PHP
php5对象复制、clone、浅复制与深复制实例详解
2019/08/14 PHP
各浏览器中querySelector和querySelectorAll的实现差异分析
2012/05/23 Javascript
IE中jquery.form中ajax提交没反应解决方法分享
2012/09/11 Javascript
jquery对元素拖动排序示例
2014/01/16 Javascript
js获取日期:昨天今天和明天、后天
2014/06/11 Javascript
Jquery实现兼容各大浏览器的Enter回车切换输入焦点的方法
2014/09/01 Javascript
C#中使用迭代器处理等待任务
2015/07/13 Javascript
javascript拖拽应用实例(二)
2016/03/25 Javascript
jQuery根据name属性进行查找的用法分析
2016/06/23 Javascript
JavaScript 函数模式详解及示例
2016/09/07 Javascript
js入门之Function函数的使用方法【新手必看】
2016/11/22 Javascript
vue单页应用中如何使用jquery的方法示例
2017/07/27 jQuery
JS实现可视化文件上传
2018/09/08 Javascript
抖音上用记事本编写爱心小程序教程
2019/04/17 Javascript
解决layui的form里的元素进行动态生成,验证失效的问题
2019/09/14 Javascript
小程序开发之模态框组件封装
2020/04/23 Javascript
Element Rate 评分的使用方法
2020/07/27 Javascript
pycharm debug功能实现跳到循环末尾的方法
2018/11/29 Python
pytorch permute维度转换方法
2018/12/14 Python
使用Django开发简单接口实现文章增删改查
2019/05/09 Python
搞清楚 Python traceback的具体使用方法
2019/05/13 Python
Python使用pyautocad+openpyxl处理cad文件示例
2019/07/11 Python
应付会计岗位职责
2013/12/12 职场文书
庆祝教师节活动方案
2014/01/31 职场文书
经理助理岗位职责
2014/03/05 职场文书
企业文化口号
2014/06/12 职场文书
小学生我的梦想演讲稿
2014/08/21 职场文书
爱祖国爱家乡演讲稿
2014/09/02 职场文书
自愿解除劳动合同协议书
2014/09/11 职场文书
个人批评与自我批评
2014/10/15 职场文书
2014工程部年度工作总结
2014/12/17 职场文书
为什么MySQL选择Repeatable Read作为默认隔离级别
2021/07/26 MySQL
业余无线电通联Q语
2022/02/18 无线电