JavaScript 中的六种循环方法

 更新时间:2021年01月06日 09:17:48   作者:Saku  
这篇文章主要介绍了JavaScript 中的六种循环方法,帮助大家更好的理解和使用JavaScript,感兴趣的朋友可以了解下

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语句中的CDATA标签的意义

    javascript语句中的CDATA标签的意义

    javascript语句中的CDATA标签的意义...
    2007-05-05
  • JavaScript中数组Array方法详解

    JavaScript中数组Array方法详解

    本文主要介绍了JavaScript中数组Array方法的相关知识,具有很好的参考价值,下面跟着小编一起来看下吧
    2017-02-02
  • uniapp web-view组件双向通信的问题记录

    uniapp web-view组件双向通信的问题记录

    本文主要介绍在uniapp中页面与webview组件内页面的双向通信问题,本文通过图文实例代码相结合给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2024-07-07
  • javascript实现前端分页效果

    javascript实现前端分页效果

    这篇文章主要为大家详细介绍了javascript实现前端分页效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-06-06
  • 原生js实现简单的链式操作

    原生js实现简单的链式操作

    这篇文章主要介绍了原生js实现简单的链式操作,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • codemirror6实现自定义代码提示效果实例

    codemirror6实现自定义代码提示效果实例

    这篇文章主要给大家介绍了关于codemirror6实现自定义代码提示效果的相关资料,CodeMirror是一个网络代码编辑器组件,它可以在网站中用于实现支持多种编辑功能的文本输入字段,并具有丰富的编程接口以允许进一步扩展,需要的朋友可以参考下
    2023-08-08
  • 文本框中禁止非数字字符输入比如手机号码、邮编

    文本框中禁止非数字字符输入比如手机号码、邮编

    总是遇到很多禁止非数字字符输入的文本框,比如手机号码了 邮编了于是下面为大家介绍下如何禁止,感兴趣的朋友可以了解下
    2013-08-08
  • javascript运动效果实例总结(放大缩小、滑动淡入、滚动)

    javascript运动效果实例总结(放大缩小、滑动淡入、滚动)

    这篇文章主要介绍了javascript运动效果,结合实例形式总结分析JavaScript实现放大缩小、滑动淡入、滚动等效果的方法,需要的朋友可以参考下
    2016-01-01
  • 一文详解Webpack中Tapable事件机制

    一文详解Webpack中Tapable事件机制

    Webpack 是前端工程化常用的静态模块打包工具,在合适的时机通过 Webpack 提供的 API 改变输出结果,使 Webpack 可以执行更广泛的任务,拥有更强的构建能力,本文将介绍 Tapable 的基本使用以及底层实现,需要的朋友可以参考下
    2023-11-11
  • Kindeditor单独调用单图上传增加预览功能的实例

    Kindeditor单独调用单图上传增加预览功能的实例

    下面小编就为大家带来一篇Kindeditor单独调用单图上传增加预览功能的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07

最新评论