文中的范例基于以下数组和对象。
var arrTmp = ["value1","value2","value3"]; var objTmp = { aa:"value1", bb:"value2", cc:function(){ console.log("value3") } }
一、JS原生方法
1. javascript遍历的常用的遍历方法是for循环和for-in,ES5的时候加上了forEach方法(IE9以下不支持)。
/****js原生遍历****/ //for循环遍历数组 for(var i=0;i<arrTmp.length;i++){ console.log(i+": "+arrTmp[i]) } //for-in遍历对象属性,i指代属性名 for(var i in objTmp){ console.log(i+": "+objTmp[i]) } //forEach遍历数组,三个参数依次是数组元素、索引、数组本身 arrTmp.forEach(function(value,index,array){ console.log(value+","+index+","+array[index]) })
2. for-in循环是为了遍历对象而设计的,事实上for-in也能用来遍历数组,但定义的索引i是字符串类型的。如果数组具有一个可枚举的方法,也会被for-in遍历到,例如:
//for-in遍历数组 for(var i in arrTmp){ console.log(i+": "+arrTmp[i]) } //for-in会遍历到数组的属性 arrTmp.name="myTest"; for(var i in arrTmp){ console.log(i+":"+arrTmp[i]) } //输出 0:value1 1:value2 2:value3 name:myTest
3. for循环和for-in能正确响应break、continue和return语句,但forEach不行。
//只会输出value1 value2 for(var i=0;i<arrTmp.length;i++){ console.log(i+": "+arrTmp[i]); if(i==1){ break; } } //会输出value1 value2 value3 arrTmp.forEach(function(value){ console.log(value+); if(value==1){ return; } })
4. ES6中,新增了for-of遍历方法。它被设计用来遍历各种类数组集合,例如DOM NodeList对象、Map和Set对象,甚至字符串也行。官方的说法是:
for...of语句在可迭代对象(包括 Array, Map, Set, String, TypedArray,arguments 对象等等)上创建一个迭代循环,对每个不同属性的属性值,调用一个自定义的有执行语句的迭代挂钩
// for-of遍历数组,不带索引,i即为数组元素 for(let i of arrTmp){ console.log(i) } //输出 "value1" "value2" "value3" // for-of遍历Map对象 let iterable = new Map([["a", 1], ["b", 2], ["c", 3]]); for (let [key, value] of iterable) { console.log(value); } //输出 1 2 3 // for-of遍历字符串 let iterable = "china中国"; for (let value of iterable) { console.log(value); } //输出 "c" "h" "i" "n" "a" "中" "国"
5. 上面的方法,注重点都是数组的元素或者对象的属性值。如果单纯的想获取对象的属性名,js有原生的Object.keys()方法(低版本IE不兼容),返回一个由对象的可枚举属性名组成的数组:
/****Object.keys()返回键名数组****/ //数组类型 let arr = ["a", "b", "c"]; console.log(Object.keys(arr)); // (3) ['0', '1', '2'] // 类数组对象 let anObj = { 100: 'a', 2: 'b', 7: 'c' }; console.log(Object.keys(anObj)); // (3) ['2', '7', '100'] //一般对象 let xyz = {z: "zzz", x: "xxx", y: "yyy"}; console.log(Object.keys(xyz)); // (3) ["z", "x", "y"]
javascript原生遍历方法的建议用法:
- 用for循环遍历数组
- 用for-in遍历对象
- 用for-of遍历类数组对象(ES6)
- 用Object.keys()获取对象属性名的集合
二、jQuery的$.each
jQuery的遍历方法通常被用来遍历DOM元素,用于数组和对象的是$.each()方法,它接受两个参数,分别指代属性名/数组索引和属性值/数组元素:
/****$.each()遍历对象和数组****/ $.each(arrTmp,function(index,value){ console.log(index+": "+value) }); $.each(objTmp,function(key,value){ console.log(key+": "+value) });
三、underscore的_.each()遍历
underscore.js是一个较流行的插件库,它封住了一些对数组和对象的处理方法。_.each()就用来遍历:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script type="text/javascript" src="/UploadFiles/2021-04-02/underscore.js">以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
P70系列延期,华为新旗舰将在下月发布
3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。
而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?
根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。
更新日志
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]