JS遍历数组的方法有:
JS遍历数组
1.for循环
/* for 普通的for循环,遍历数组 */
var arr = [1,2,3,4,5];
for (var i =0;i < arr.length;i ++){
console.log('for遍历',arr[i]);
}
/* 当数据过多时,可以将长度缓存起来,避免重复获取长度,数组很大时,优化效果明显 */
// for(var j = 0,len = arr.length; j < len; j++){
// console.log(arr[j]);
// }
2.forEach循环(ES5新增)
/* forEach 数组自带的循环,遍历数组 */
let arr = [1,2,3,4,5,6,7]
arr.forEach(function(value,i){
console.log('forEach遍历',i,value);
})
3.for…in(不推荐遍历数组)
for…in是es5标准,此方法遍历数组的效率比较低,主要用来循环遍历对象的属性
let arr = [1,2,3,4,5];
for(let item in arr){
console.log(arr[item])
}
4.for…of(ES6新增)
let arr = [1,2,3,4,5,6];
for(let value of arr){
console.log(value);
}
es6新出的方法,for…of ,值得注意的是,for…of 和 for…in不一样,for…in是直接获取数组的索引,而for…of是直接获取的数组的值。
它既比传统的for循环简洁,同时弥补了forEach和for-in循环的短板。
循环遍历键值对的value,与for in遍历key相反
5.map(ES6新增)
map是映射的意思,原数组会被映射成对应的新数组
let arr =[1,2,3,4,5,6];
let newArr = arr.map( function(value,index){
console.log(value + '--' + index)
return value+1
})
console.log(arr);//1,2,3,4,5,6
console.log(newArr);//2,3,4,5,6,7
注意:从上面的代码我们可以发现,map支持return,相当于把原数组克隆了一份,把克隆的每项都改变了,也不会影响原数组;
1.for…in遍历对象(常用)
let obj = {
name:'西城辉',
age:18,
job:'student'
}
for (let key in obj){
console.log(key + ':' + obj[key]);
}
2.Object.keys 遍历对象
let obj = {
name:'西城辉',
age:18,
job:'student'
}
for (let key of Object.keys(obj)){//for of 不能单独来遍历对象,要结合Object.keys一起使用
console.log(key + ':' + obj[key]);
}
**3.Object.getOwnPropertyNames(obj)**遍历对象
let obj = {
name:'西城辉',
age:18,
job:'student'
}
Object.getOwnPropertyNames(obj).forEach(function (key){
console.log(key+ ':' +obj[key]);
})
**返回一个数组,包含对象自身的所有属性(包含不可枚举属性) 遍历可以获取key和value **