js遍历
来源:互联网 发布:大数据时代保险变革研 编辑:程序博客网 时间:2024/05/22 04:59
js遍历方法
var arrDemo =['aaa','bbb','ccc','ddd','eee'];var objDemo = {cn:'aaa',sex:'boy',type:'cute',age:'18'}; // for循环:循环数组 for(var i=0;i<arrDemo.length;i++){ //i为index console.log(i+'---'+arrDemo[i]); } // 输出 0---aaa 1---bbb 2---ccc 3---ddd 4---eee // forEach:用于调用数组的每个元素,并将元素传递给回调函数。你不能使用break语句中断循环,也不能使用return语句返回到外层函数。 arrDemo.forEach(function(value,index,thisArr){ //三个参数,分别为索引,值,当前array console.log(value+'---'+index+'---'+thisArr[index]); }); // 输出 aaa---0---aaa bbb---1---bbb ccc---2---ccc ddd---3---ddd eee---4---eee // for...of:用于遍历所有可遍历(有Symbol.iterator属性)的collection的数值 for (var value of arrDemo) { console.log(value); } // 输出 aaa bbb ccc ddd eee // for...in:会遍历对象所有可枚举的属性,包括prototype的,可通过hasOwnProperty()来过滤,使得只有私有属性被遍历 for(var key in objDemo){ console.log(key+'---'+objDemo[key]); } for(var key in objDemo){ console.log(key+'---'+objDemo[key]); } // 输出 cn---aaa sex---boy type---cute age---18 // ES6中有四类数据结构默认具有遍历器接口: (1)数组 (2)某些类数组 (3)Map (4)Set // for...of适合用来遍历数组,for…in也可用于遍历数组,但是如果通过Array.prototype.xxx为Array原生对象添加了属性,则会在该遍历中被读到。 // foreach,map,filter,reduce 用于数组遍历 // map和filter会返回一个新的数组 arrDemo.map(function(value,index,thisArr){ //三个参数,分别为索引,值,当前array console.log(value+'---'+index+'---'+thisArr[index]); }); // 输出 aaa---0---aaa bbb---1---bbb ccc---2---ccc ddd---3---ddd eee---4---eee [undefined, undefined, undefined, undefined, undefined] arrDemo.map(function(value,index,thisArr){ //三个参数,分别为索引,值,当前array return thisArr; }); // 输出 ["aaa", "bbb", "ccc", "ddd", "eee"] arrDemo.map(function(value,index,thisArr){ //三个参数,分别为索引,值,当前array return value+'tip'; }); // 输出 ["aaatip", "bbbtip", "ccctip", "dddtip", "eeetip"] arrDemo.filter(function(value,index,thisArr){ //三个参数,分别为索引,值,当前array console.log(value+'---'+index+'---'+thisArr[index]); }); // 输出 aaa---0---aaa bbb---1---bbb ccc---2---ccc ddd---3---ddd eee---4---eee [] arrDemo.filter(function(value,index,thisArr){ //三个参数,分别为索引,值,当前array return thisArr; }); // 输出 ["aaa", "bbb", "ccc", "ddd", "eee"] arrDemo.filter(function(value,index,thisArr){ //三个参数,分别为索引,值,当前array return index>2; }); // 输出 ["ddd", "eee"] // reduce:会返回一个累加值 arrDemo.reduce(function(previousValue, currentValue, currentIndex, thisArray) { return previousValue + currentValue; }); // 输出 "aaabbbcccdddeee"
总结
无论遍历树、链表、集合、哈希等等复数对象容器,通常目的只是为了遍历,而不在乎容器本身的数据结构、数量。
for、forEach本身就是对迭代器的语法糖封装
基础的for必须制定初始位置,手动查找到对象,比如:
for (var i = 0; i < array.Length; i++) { item = array[i]; //Do sth. to item}迭代器把这个过程封装了,所以可以写成:
foreach (item in array) { //Do sth. to item}for of / foreach实际上是调用了迭代接口
获取了iterator后,通过iterator不断地拿next(),直到拿不到为止。
foreach (item in array) { item.Invoke();}经过编译后类似于(伪代码):
var iterator = array.Iterator;while (var next = iterator.next()) { item.Invoke();}array.Iterator就是源自于(遍历/枚举/迭代)接口,没有这个接口无法使用迭代器。
阅读全文
0 0
- JS遍历
- JS遍历
- js遍历
- JS遍历打印、遍历数组
- js遍历备忘
- js遍历td,tr
- JS 遍历GridView DropDownList
- JS 遍历数组显示
- js遍历json数据
- JS遍历Table
- JS 遍历form
- js遍历json数据
- js 遍历json
- js、jquery 遍历table
- js如何遍历dom
- js遍历map
- JS 遍历map List
- js hash 遍历
- Java文件路径/服务器路径的获取
- 放弃治疗#10
- 软件测试黑马工程师--数据库03
- 《leetCode》:Letter Combinations of a Phone Number
- API学习包装类Short
- js遍历
- hive 中的 关系运算
- 数据传入数据库的php代码
- Spring boot 使用注解方式无法新建一个后台线程问题
- Trailing Zeroes (III) (r二分)【LightOj】-1138
- Spring-Controller单元测试
- 设计模式-责任链模式-chain-python
- SSL2671 2017年8月8日提高组T2 呀!回文串(dp)
- HDU