JavaScript数组的循环和迭代
循环
for循环
普通版for循环
var arr = ["a","b","c","d"]; for (let i = 0; i < arr.length; i++){ console.log(arr[i]); .//a b c d }
优化版for循环
var arr = ["a","b","c","d"]; for (let i = 0; len = arr.length;i < len; i++){ console.log(arr[i]); .//a b c d }
for in 循环
var arr = ["a","b","c","d"]; for (let i in arr ){ console.log(arr[i]); .//a b c d }
for of 循环
var arr = ["a","b","c","d"]; for (let item of arr){ console.log(item); .//a b c d }
说明
- for-in 是遍历集合对象的键名, for-of 是直接遍历集合对象的键值。
- for-of 的遍历方式性能要高于 for-in ,但仍比不不上普通的 for 循环。
- for-of 不仅支持数组的遍历,还支持大多数类数组对象。同时也支持 ES6 里新增的 Map 和 Set 对象
数组迭代
forEach()
描述:按顺序让数组中每一项依次执行某种相同的操作。
var arr = [10, 11, 12,13, 14]; arr.forEach(function(item, index){ console.log( item); //10 11 12 13 14 console.log( index); //0 1 2 3 4 })
说明:
- 数组自带的 forEach 循环,使用频率较高,但实际上性能比普通 for 循环弱。
forEach 不能使用 continue 和 break 语句句中断循环,也不能使用 return 语句句返回到外层函 数。
map()
描述:按顺序让数组中每一项依次执行某种相同的操作,然后返回一个新数组
var arr = [10, 11, 12,13, 14]; var newArr = arr.map(function(item, index){ return item * 2; }) console.log( newArr); //[20, 22, 24, 26,28]
filter()
描述:按顺序让数组中每一项依次执行某种相同的操作,然后筛选出符合条件的元素,组成新数组并返回。
var arr = [10, 11, 12,13, 14]; var newArr = arr.filter(function(item, index){ return item % 2 == 0; }) console.log( newArr); //[10, 12, 14]
feduce()
描述:按顺序让数组中的前项和后项做某种计算,并累计返回最终值。
var arr = [10, 11, 12,13, 14]; var result = arr.reduce(function(prev, next){ return prev + next; }) console.log( result); // 60
every()
描述:按顺序让数组中每一项依次执行某种相同的操作,用来检测数组中每一项是否都符合条件。
var arr = [10, 11, 12,13, 14]; var result = arr.every(function(item, index){ return item % 2 == 0; }) console.log( result); // false
说明:检测的元素中,如果全部都满足条件,返回 true ,只要有一项不满足条件,则返回 false 。即 一假必假。
some()
描述:按顺序让数组中每一项依次执行某种相同的操作,用来检测数组中某一项是否都符合条件。
var arr = [10, 11, 12,13, 14]; var result = arr.some(function(item, index){ return item % 2 == 0; }) console.log( result); // true
说明:检测的元素中,只要有一项符合条件,就返回结果 true ,如果全部都不满足条件,则返回结 果 false 。即一真必真。
时间: 2024-10-11 22:48:03