js数组遍历的方法
来源:互联网 发布:linux 查看函数头文件 编辑:程序博客网 时间:2024/06/05 05:10
第一种:
for循环 :
var arr = ["a", "b", "c"];for (var i = 0; i < arr.length; i++) { console.log(arr[i]);}
这种方法每循环一次就必须检查一下数组长度,所以我们可以对其进行优化一下。
var arr = ["a", "b", "c"];var length = arr.length;for (var i = 0; i < length; i++) { console.log(arr[i]);}
这样就可以减少读取长度的时间,但是如果不用判断终止条件,就会变得更快了
var arr = ["a", "b", "c"];var i = arr.length;while(i--){ console.log(arr[i]);}
第二种:
for-in 循环:
var arr = ["a", "b", "c"];var arr1 = { name : 'ly', age : 20,};for (var obj in arr1) { console.log(arr1[obj]); console.log(obj);}for (var i in arr) { console.log(arr[i]); console.log(i);}
里面的obj实际上就是name,age,i就为arr的索引值,对应于arr的下标。for-in 需要分析出arr1 的每个属性,这个操作性能开销很大。用在 key 已知的数组上是非常不划算的。所以尽量不要用 for-in,除非你不清楚要处理哪些属性,例如 JSON 对象这样的情况。
第三种:
forEach:数组自带的foreach循环,使用频率较高,实际上性能比普通for循环弱
var arr = ["a", "b", "c"];arr.forEach( function demo(item,count) { console.log(item + " " + count); });
forEach 无法遍历对象;
forEach 无法使用 break,continue 跳出循环,且使用 return 是跳过本次循环;
可以添加第二个参数,为一个数组,回调中的 this 会指向这个数组,若没有添加,则是指向 window;
forEach变种:由于foreach是Array型自带的,对于一些非这种类型的,无法直接使用(如NodeList),所以才有了这个变种,使用这个变种可以让类似的数组拥有foreach功能。
Array.prototype.forEach.call(arr,function(el){ });
第四种:
for-of:先说一下for-in和for-of的区别。
遍历Array可以采用下标循环,遍历Map和Set就无法使用下标。Map,set–无下标,无法使用索引进行遍历
为了统一集合类型,ES6标准引入了新的iterable类型,
Array、Map和Set都属于iterable类型。
==具有iterable类型的集合可以通过新的for … of循环来遍历。==
一个Array数组实际上也是一个对象,它的每个元素的索引被视为一个属性。for in 遍历数组时会为把数组索引作为键值。
var arr = [1,2,3,4];arr.value = "val";for(var i in arr){ console.log(i+" "+arr[i]);}console.log(arr); //[1, 2, 3, 4, value: "val"]alert(arr);//[1, 2, 3, 4]
var arr = [1,2,3,4];arr.value = "val";for(var i of arr){ console.log(i); //1,2,3,4}
第五种:
every():
如果数组中检测到有一个元素不满足,则整个表达式返回 false ,且剩余的元素不会再进行检测。
如果所有元素都满足条件,则返回 true。
注意:
every() 不会对空数组进行检测。
every() 不会改变原始数组。
var arr = [1, 2, 3];var demo = arr.every(function(item){ return item > 0;});console.log(demo);
第六种:
filter():
返回一个新数组。每一项返回值为true的都放入新数组中
var arr = [1, 2, 3];var demo = arr.filter(function(item){ return item > 1;});console.log(demo);
第七种:
map():
返回一个新数组。哪一个有返回值就把哪一项添加进新数组
var arr = [1, 2, 3];var demo = arr.map(function(item){ return item > 1;});console.log(demo);//false,true,true
第八种:
some():
如果每一项都返回false结果是false;
如果有一项返回true,那么立刻停止遍历返回true
和every()相反
var arr = [1, 2, 3];var demo = arr.some(function(item){ return item > 1;});console.log(demo); //true
- JS数组的遍历方法
- js遍历数组的方法
- js数组遍历的方法
- js/JQuery中遍历数组的方法
- Js关于数组的遍历方法
- js数组遍历的三种方法
- js数组循环遍历数组内所有元素的方法
- JS数组循环遍历数组内所有元素的方法
- 数组的遍历方法
- 数组的遍历方法
- js 的each()方法遍历对象和数组
- JS基础第六天:创建数组 遍历的基础方法
- JS数组与对象的遍历方法大全
- js---原生JS数组arr遍历方法forEach()和map()遍历的区别以及兼容写法
- js遍历数组方法(总结)
- 遍历NSArray数组的方法
- ios 遍历数组的方法
- PHP数组的遍历方法
- Java 线程池是如何工作的
- 脑补mysql-shell
- 洛谷P3929波动序列
- 嵌入式开发(ARM9)学习笔记(七)-Windows和Linux文件共享
- jstree使用方法
- js数组遍历的方法
- MySQL 分区表原理及使用详解
- mnist战斗
- Aragorn's Story HDU
- 简单的几种this指向
- Java的类加载机制
- unit9
- AMQP协议和rabbitmq理解
- OkHttp数据请求和OkHttp拦截器