javascript 有以下几种循环遍历方式:
1、for 循环
let arr = [1,2,3];
for (let i=0; i<arr.length; i++){ }
2、for in
以任意顺序遍历一个对象自有的、继承的、可枚举的、非Symbol的属性。对于每个不同的属性,语句都会被执行。
for...in 循环只遍历可枚举属性。像 Array和 Object使用内置构造函数所创建的对象都会继承自Object.prototype和String.prototype的不可枚举属性,例如 String 的 indexOf() 方法或 Object的toString()方法。循环将遍历对象本身的所有可枚举属性,以及对象从其构造函数原型中继承的属性(更接近原型链中对象的属性覆盖原型属性)。
for (variable in object) {...}
variable:在每次迭代时,将不同的属性名分配给变量。object:被迭代枚举其属性的对象。
3、 for of
在 ES6 中引入的 for...of 循环,以替代 for...in 和 forEach() ,并支持新的迭代协议。for...of 允许你遍历 Arrays(数组), Strings(字符串), Maps(映射), Sets(集合)等可迭代的数据结构等。for of遍历数组元素值,与for in有区别
for (variable of iterable) { statement }
variable:每个迭代的属性值被分配给该变量。iterable:一个具有可枚举属性并且可以迭代的对象。
4、while 循环
while 循环会在指定条件为真时循环执行代码块。
while (条件){code}
5、do while 循环
循环至少执行一次,即便条件为 false,因为代码块是在条件语句判断前执行:
var i = 0;
do { i++; }
while (i < 5) {
console.log(i);
}
6、Array forEach 循环
forEach 方法按升序为数组中含有效值的每一项执行一次callback 函数,那些已删除或者未初始化的项将被跳过(例如在稀疏数组上)。
arr.forEach(callback[, thisArg]);
callback:为数组中每个元素执行的函数,该函数接收三个参数:
currentValue:数组中正在处理的当前元素。
index可选;数组中正在处理的当前元素的索引。
array可选:forEach() 方法正在操作的数组。
thisArg可选:可选参数。当执行回调函数时用作 this 的值(参考对象)。
7、Array map()方法
map() 方法返回一个新数组,不会改变原始数组。同时新数组中的元素为原始数组元素调用函数处理后的值,并按照原始数组元素顺序依次处理元素。不会对空数组检测
array.map(function(currentValue,index,arr), thisValue)
8、Array filter() 方法
创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素.不会对空数组进行检测;不会改变原始数组
array.filter(function(currentValue,index,arr),thisValue);
9、Array some() 方法
some() 方法测试是否至少有一个元素可以通过被提供的函数方法。该方法返回一个Boolean类型的值。
arr.some(callback(element[, index[, array]])[, thisArg])
10、Array every() 方法
every() 方法用于检测数组所有元素是否都符合指定条件(通过函数提供)。
every() 方法使用指定函数检测数组中的所有元素:如果数组中检测到有一个元素不满足,则整个表达式返回 false ,且剩余的元素不会再进行检测。如果所有元素都满足条件,则返回 true。
array.every(function(currentValue,index,arr), thisValue)
11、Array reduce()方法
reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。 可以作为一个高阶函数,用于函数的 compose。
注意: reduce() 对于空数组是不会执行回调函数的。
array.reduce(function(total, currentValue, currentIndex, arr), initialValue)
12、Array reduceRight()方法
接受一个函数作为累加器(accumulator)和数组的每个值(从右到左)将其减少为单个值。
arr.reduceRight(callback[, initialValue])