js中Array对象的常用遍历方法
1.for循环
常用的循环工具,经常用于数组的循环遍历
let arr1=[1,2,3,4,5]
for(let i=0;i<arr1.length;i++)
console.log(arr1[i])
//1
//2
//3
//4
//5
2.for in循环
主要用于普通对象的遍历,其中i代表对象的key值也就是obj[i]的值,也可以用于数组的遍历但是不太建议,因为i输出是字符串,当发生运算时就会导致数据错误。
for in在循环的时候会找到prototype上去,所以最好在循环体内加一个判断(obj[i].hasOwnPrototype(i)),hasOwnProperty()函数用于指示一个对象自身(不包括原型链)是否具有指定名称的属性。如果有,返回true,否则返回false。
let obj={name:'yh',age:20}
let arr1=[1,2,3,4,5]
for(let i in obj)
console.log(i)
for(let i in arr1)
console.log(i)
//name
//age
//1
//2
//3
//4
//5
3.while循环
let obj=[{name:"张三",age:18},{name:'李四',age:20}]
let i=0;
while(obj[i])
{
console.log(obj[i])
i++
}
//{name: '张三', age: 18}
//{name: '李四', age: 20}
4.do while循环
let i=3
do{
console.log(i--)
}while(i>0)
//3
//2
//1
5.Array forEach 循环
forEach循环在所有元素调用完毕之前是不能停止的,它没有break语句,,如果你必须要停止,可以尝试 try catch 语句,就是在要强制退出的时候,抛出一个 error 给 catch 捕捉到,然后在 catch 里面 return,这样就能中止循环了,如果你经常用这个方法,最好自定义一个这样的 forEach 函数在你的库里。
let arr=[{name:"张三",age:18},{name:'李四',age:20}]
arr.forEach(function(value,index){
console.log(value,index)
})
//{name: '张三', age: 18} 0
//{name: '李四', age: 20} 1
6.Array map()方法
map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。
注意:map 和 forEach 方法都是只能用来遍历数组,不能用来遍历普通对象
let arr=[1,2,3]
let tt=arr.map(function(i){
console.log(i)
return i*2
})
console.log(tt)
/*
1
2
3
(3) [2, 4, 6]
*/
7.Array filter()方法
filter 方法是 Array 对象内置方法,它会返回通过过滤的元素,不改变原来的数组。
let arr=[2,2,3]
let newarr=arr.filter(function(i){
return i>1
})
console.log(newarr)
//(3)[2,2,,3]
8.Array some()方法
some() 方法用于检测数组中的元素是否满足指定条件(函数提供),返回 boolean 值,不改变原数组
let arr=[1,2,3]
let newarr=arr.some(function(i){
return i>2
})
console.log(newarr)
//true
9.Array every()方法
every() 方法用于检测数组所有元素是否都符合指定条件(通过函数提供),返回 boolean 值,不改变原数组。
var number = [12, 30, 25, 20]
var allOver20 = number.every(function(value) {
return value > 20
})
console.log(allOver20)
//false
10.Array reduce()方法
reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。
let arr = [1, 2, 3, 4, 5]
let sum = arr.reduce(function(i, j) {
console.log(i, j )
return i + j;
})
console.log(sum)
//1 2
//3 3
//6 4
//10 5
//15
11.Array reduceRight()方法
reduceRight()方法,和 reduce() 功能是一样的,它是从数组的末尾处向前开始计算。
let arr = [1, 2, 3, 4, 5]
let sum = arr.reduceRight(function(i, j) {
console.log(i, j)
return i + j;
})
console.log(sum)
//5 4
//9 3
//12 2
//14 1
//15