for、for...in、for...of、forEach和map之间的区别

遍历数组
//for…in遍历属性名称key,for…of遍历属性值value

 let arr=[a,b,c];
 for(let i=0; i<arr.length; i++){
     console.log(i)    //a,b,c       最早学会使用的
 }
 for(let i in arr){
      console.log(i)   //0,1,2
 }
 for(let item of arr){
     console.log(item )   //a,b,c     es6的语法
 }

-----------------------------------------------------------------------------分割线----------------------------------------------------------------------------------

 var arr=[10,20,30];
 var newArr1=arr.forEach(function(value,index,array){
 //value为遍历的当前元素,index为当前索引,array为正在操作的数组
     return value*2
})
console.log(newArr1);   //undefined     forEach没有返回值
console.log(arr);   //[10,20,30]      原数组

 var newArr2=arr.map(function(value,index,array){
 //value为遍历的当前元素,index为当前索引,array为正在操作的数组
     return value*2
})
console.log(newArr2);   //[20,40,60]    map有返回值
console.log(arr);   //[10,20,30]      仍然为原数组

arr.map(function(value,index,array){
     array[index]=value*2;
})
console.log(arr);   //[20.40,60]    
//通过下标改变数组的值, 这点和forEach相同

遍历对象

let obj={a:1,b:2}
for(let i in obj){
     console.log(i)   //a,b
}
for(let item of obj){     //不可用于遍历对象
     console.log(item)       //TypeError
}

另外可以用Object.keys()和Object.values()来遍历对象。它们都是返回数组。

Object.keys(obj)      //[a,b]
Object.values(obj)    //[1,2]

猜你喜欢

转载自blog.csdn.net/qq_37012533/article/details/84957106