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 循环的资料请关注其它相关文章!
华山资源网 Design By www.eoogi.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
华山资源网 Design By www.eoogi.com
暂无评论...
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新日志
2024年09月21日
2024年09月21日
- [ABC]安娜-胆麦发烧女声[6N纯银镀膜][2016[低速原抓WAV+CUE]
- 任天堂今晚举行直面会!第三方及独立游戏展示
- 《哆啦A梦的铜锣烧店物语》发售!开罗公式+哆啦A梦
- 任天堂公布《塞尔达传说》系列时间线:野炊与王泪独立在外
- 五条人.2012-一些风景2CD【刀马旦】【WAV+CUE】
- 陈奕迅.2013-Easons.Life演唱会2CD(2024环球红馆40复刻系列)【环球】【WAV+CUE】
- 许美静.1995-遗憾(新马版)【上华】【WAV+CUE】
- 《叶倩文 歌声情缘》[WAV+CUE][410MB]
- 《张国荣 首首动听经典不容错过 追忆的风 2CD》[WAV+CUE][870MB]
- 《腾格尔 容中尔甲 亚东 高原三星 男人篇 3CD》[WAV/分轨][1GB]
- 命运圣契公测实测可用兑换码大全 命运圣契最新兑换码分享
- 黑神话悟空上品疾蝠精魄获取方法一览|上品疾蝠精魄收集攻略
- 《七龙珠电光炸裂!ZERO》GT角色预告片曝光,15位新角色登场
- [ABC]安娜-胆麦发烧女声[6N纯银镀膜][2016[低速原抓WAV+CUE]
- NewViennaOctetViennaWindSoloists-TheDeccaRecordings(2024)18CD[24-48][FLAC]-7