遍历数组
//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]