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 相关文章推荐
在IE 浏览器中使用 jquery的fadeIn() 效果 英文字符字体加粗
Jun 02 Javascript
jQuery+css实现百度百科的页面导航效果
Dec 16 Javascript
javascript文件加载管理简单实现方法
Jul 25 Javascript
JS简单实现无缝滚动效果实例
Aug 24 Javascript
AngularJS封装指令方法详解
Dec 12 Javascript
微信小程序 数组中的push与concat的区别
Jan 05 Javascript
JavaScript数组_动力节点Java学院整理
Jun 26 Javascript
React Native仿美团下拉菜单的实例代码
Aug 08 Javascript
vue滚动插件better-scroll使用详解
Oct 18 Javascript
layui 解决富文本框form表单提交为空的问题
Oct 26 Javascript
Vue实现剪切板图片压缩功能
Feb 04 Javascript
实现AJAX异步调用和局部刷新的基本步骤
Mar 17 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
destoon后台网站设置变成空白的解决方法
2014/06/21 PHP
php实现搜索一维数组元素并删除二维数组对应元素的方法
2015/07/06 PHP
ThinkPHP3.2.1图片验证码实现方法
2016/08/19 PHP
简单三步,搞掂内存泄漏
2007/03/10 Javascript
把JS与CSS写在同一个文件里的书写方法
2007/06/02 Javascript
JavaScript 快捷键设置实现代码
2009/03/13 Javascript
基于jQuery的弹出警告对话框美化插件(警告,确认和提示)
2010/06/10 Javascript
服务器端的JavaScript脚本 Node.js 使用入门
2012/03/07 Javascript
P3P Header解决Cookie跨域的问题
2013/03/12 Javascript
JQuery基础语法小结
2015/02/27 Javascript
jquery实现手机号码选号的方法
2015/07/31 Javascript
深入学习AngularJS中数据的双向绑定机制
2016/03/04 Javascript
基于BootStrap的前端分页带省略号和上下页效果
2017/05/18 Javascript
JavaScript事件冒泡与事件捕获实例分析
2018/08/01 Javascript
浅谈在vue中使用mint-ui swipe遇到的问题
2018/09/27 Javascript
vue中使用codemirror的实例详解
2018/11/01 Javascript
JavaScript刷新页面的几种方法总结
2019/03/28 Javascript
Angular value与ngValue区别详解
2019/11/27 Javascript
python使用scrapy解析js示例
2014/01/23 Python
Python字符串拼接、截取及替换方法总结分析
2016/04/13 Python
Python实现矩阵加法和乘法的方法分析
2017/12/19 Python
Python正则匹配判断手机号是否合法的方法
2020/12/09 Python
python单线程文件传输的实例(C/S)
2019/02/13 Python
超简单的Python HTTP服务
2019/07/22 Python
Python常用编译器原理及特点解析
2020/03/23 Python
Python3如何判断三角形的类型
2020/04/12 Python
css3实现的多级渐变下拉菜单导航效果代码
2015/08/31 HTML / CSS
Beach Bunny Swimwear官网:设计师泳装和性感比基尼
2019/03/13 全球购物
Crabtree & Evelyn欧盟:豪华洗浴、身体和护发
2021/03/09 全球购物
师范教师大学生职业生涯规划范文
2014/01/05 职场文书
我为自己代言广告词
2014/03/18 职场文书
社区六一儿童节活动总结
2015/02/11 职场文书
党员进社区活动总结
2015/05/07 职场文书
2016见义勇为事迹材料汇总
2016/03/01 职场文书
工作汇报材料难写?方法都在这里了!
2019/07/01 职场文书
Vue Mint UI mt-swipe的使用方式
2022/06/05 Vue.js