- 遍历器:取出数据容器中所以元素的工具
- for循环 (最重要的循环,兼容性好)
var arr = [10, 203, 44, 54, 5]
for (var i = 0; i < arr.length; i++) {
re = arr[i]
console.log(re)
}
2. for in 循环(主要用来遍历普通对象)
let obj = {
name: 'zhou',
age: '**',
hobby: 'baskitball'
}
for (let i in obj) {
console.log(i, obj[i])
}
(1)在for-in循环中i代表对象的属性名值, obj[i] 代表对应的属性值
(2)尽量不用用来遍历数组,有风险,因为因为 i 输出为字符串形式, 而不是数组需要的数字下标某些情况下, 会发生字符串运算而不是数字运算, 导致数据错误
(3)for in 循环的时候,不仅遍历自身的属性,还会找到 prototype 上去,最好在循环体内加一个判断,就用obj[i].hasOwnProperty(i),这样就避免遍历出太多不需要的属性。
- while
- do-while 循环循环是while循环的一个变体, 它首先执行一次操作, 然后才进行条件判断, 是 true 的话再继续执行操作, 是 false 的话循环结束。
- Array forEach 循环
var arr = [10, 203, 44, {
name: 'exo'
}]
var re = arr.forEach(function (el, index, arr) { //el表示数组中的元素,index表示数组下标 arr表示遍历的数组
console.log(el, index, arr)
})
循环数组中每一个元素并采取操作, 没有返回值就undefined, 可以不用知道数组长度, 他有三个参数, 只有第一个是必需的, 代表当前下标下的 值。另外请注意, forEach 循环在所有元素调用完毕之前是不能停止的, 它没有break 语句, 如果你必须要停止, 可以尝试try-catch 语句, 就是在要强制退出的时候, 抛出一个 error 给catch 捕捉到, 然后在catch 里面return, 这样就能中止循环了, 如果你经常用这个方法, 最好自定义一个这样的 forEach 函数在你的库里。
6. Array map() 方法
var arr = [10, 203, 4]
var re = arr.map(function (el, index, arr) {
console.log(el, index, arr)
return el + 1 //返回值自己决定
})
console.log(re)
返回的是一个新数组, 数组中的元素为原始数组元素调用函数处理后的值。注意: map 和 forEach 方法都是只能用来遍历数组, 不能用来遍历普通对象。
7. Array filter() 方法
var arr = [10, 80, 34, 50]
var re = arr.filter(function (el, index, arr) {
console.log(el, index, arr)
if (el > 18) {
return true
} else {
return false
}
})
console.log(re)
它会返回通过过滤的元素(返回true加入新数组,false就筛选掉), 不改变原来的数组。 对象也可以筛选
var arr=[{tag:0,name:"karen"},{tag:1,name:"jack"},{tag:1,name:"marry"}]
var arr2=arr.filter(function(el){
return el.tag//是1会保留,0会被筛选掉
})
console.log(arr2)
- Array some() 方法 用于检测数组中的元素是否满足指定条件,当有条件满足时便不再遍历, 返回 true 值, 没有满足的话,遍历完之后返回false,不改变原数组。
var arr = [10, , 50, 200, 500, 400]
var re = arr.some(function (el) {
console.log(el)
return el > 100
})
console.log(re, arr)
- Array every() 方法 用于检测数组中的元素是否满足指定条件,当有条件满足时便不再遍历, 返回 false 值, 没有满足的话,遍历完之后返回true,不改变原数组。
var arr = [200, 500, 10, 50, 400]
var re = arr.every(function (el) {
console.log(el)
return el > 100
})
console.log(re, arr)
- Array reduce() 方法 i与j先取前两个值,然后i与j运算后的值重新赋给i,j取数组中下一个值,以此类推;最后运算出一个值。
var arr = [1, 4, 7, 2, 6, 3];
var ad = arr.reduce(function (i, j) {
console.log(i, j)
return i + j; //可以是其他运算法则
})
console.log(ad, arr)
-
Array reduceRight() 方法 和 reduce() 功能是一样的, 它是从数组的末尾处向前开始计算。
-
for of 循环 for of 循环是 Es6 中新增的语句,用来替代for in和forEach, 它允许你遍历 Arrays( 数组), Strings( 字符串), Maps( 映射), Sets( 集合) 等可迭代(Iterable data) 的数据结构, 注意它的兼容性。
let arr = ['name', 'age','tffd',{name:'lay'}];
for (let i of arr) {
console.log(i)
}