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 相关文章推荐
基于jquery的文本框与autocomplete结合使用(asp.net+json)
May 30 Javascript
js如何获取object类型里的键值
Feb 18 Javascript
jQuery使用slideUp方法实现控制元素缓慢收起
Mar 27 Javascript
jQuery对象的链式操作用法分析
May 10 Javascript
完美实现八种js焦点轮播图(上篇)
Jul 18 Javascript
JavaScript使用delete删除数组元素用法示例【数组长度不变】
Jan 17 Javascript
Django1.7+JQuery+Ajax验证用户注册集成小例子
Apr 08 jQuery
react-router实现按需加载
May 09 Javascript
vue 做移动端微信公众号采坑经验记录
Apr 26 Javascript
在Bootstrap开发框架中使用dataTable直接录入表格行数据的方法
Oct 25 Javascript
使用ThinkJs搭建微信中控服务的实现方法
Aug 08 Javascript
Layui实现数据表格中鼠标悬浮图片放大效果,离开时恢复原图的方法
Sep 11 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中在数据库中保存Checkbox数据(1)
2006/10/09 PHP
PHP 程序员应该使用的10个组件
2009/10/31 PHP
php利用cookie实现访问次数统计代码
2011/05/19 PHP
php图像处理函数大全(推荐收藏)
2013/07/11 PHP
PHPAnalysis中文分词类详解
2014/06/13 PHP
Laravel 中获取上一篇和下一篇数据
2015/07/27 PHP
PHP正则匹配日期和时间(时间戳转换)的实例代码
2016/12/14 PHP
php安装扩展mysqli的实现步骤及报错解决办法
2017/09/23 PHP
JScript内置对象Array中元素的删除方法
2007/03/08 Javascript
基于jquery的滑动样例代码
2010/11/20 Javascript
Javascript图像处理—为矩阵添加常用方法
2012/12/27 Javascript
jquery实现的鼠标拖动排序Li或Table
2014/05/04 Javascript
js判断手机访问或者PC的几个例子(常用于手机跳转)
2015/12/15 Javascript
Bootstrap学习笔记之css样式设计(1)
2016/06/07 Javascript
浅谈jquery中使用canvas的问题
2016/10/10 Javascript
JavaScript判断浏览器对CSS3属性是否支持的多种方法
2016/11/13 Javascript
利用n 升级工具升级Node.js版本及在mac环境下的坑
2017/02/15 Javascript
详解webpack打包nodejs项目(前端代码)
2018/09/19 NodeJs
JS选取DOM元素常见操作方法实例分析
2018/12/10 Javascript
js中实现继承的五种方法
2021/01/25 Javascript
[56:24]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#1Liquid VS MVP.Phx第二局
2016/03/04 DOTA
在ironpython中利用装饰器执行SQL操作的例子
2015/05/02 Python
Django中处理出错页面的方法
2015/07/15 Python
python给指定csv表格中的联系人群发邮件(带附件的邮件)
2019/12/31 Python
为什么Runtime.exec(“ls”)没有任何输出?
2014/10/03 面试题
医学生个人求职信范文
2013/09/24 职场文书
物流司机岗位职责
2013/12/28 职场文书
央视元宵晚会主持串词
2014/03/25 职场文书
《新型玻璃》教学反思
2014/04/13 职场文书
霸气押韵的班级口号
2014/06/09 职场文书
2014年国庆节广播稿
2014/09/19 职场文书
党员个人查摆剖析材料
2014/10/16 职场文书
2014年创先争优工作总结
2014/12/11 职场文书
南京导游词
2015/02/03 职场文书
讲文明倡议书
2015/04/29 职场文书
同乡会致辞
2015/07/30 职场文书