一、ES6数组遍历
(1)find 返回数组中第一个符合条件的元素
let result = arr.find( (val) => {
return val % 2 == 0;
});
console.log(result);
(2) findIndex,返回第一个符合条件的元素的索引
let result = arr.findIndex( (val) => {
return val % 2 == 0;
});
console.log(result);
(3) for of
获取值
for(let item of arr){
console.log(item);
}
for(let item of arr.values()){
console.log(item);
}
获取索引
for(let index of arr.keys()){
console.log(index);
}
获取值和索引
for(let [index,item] of arr.entries()){
console.log(index,item);
}
二、ES5数组遍历
(1)forEach,不支持continue和break
arr.forEach((item,index,array) => {
console.log(item,index);
});
(2)map遍历,传入一个回调函数,返回一个新数组
let result = arr.map((val) => {
val ++;
return val;
})
console.log(arr,result);
(3)filter遍历,传入回调函数,返回过滤后的数组
let result = arr.filter( (val) => {
return val % 2 == 0;
});
console.log(result);
(4)some,返回是否存在要检测的值,返回Boolean
let result = arr.some( (val) => {
return val == 2;
});
console.log(arr,result);
(5)every,只有每个元素都符合才返回true
let result = arr.every( (val) => {
return val % 2 == 0;
});
console.log(result);
(6)reduce
去重
let result = arr.reduce( (pre,cur) => {
pre.indexOf(cur) == -1 && pre.push(cur);
return pre;
},[]);
console.log(result);
累加
let result = arr.reduce( (pre,cur) => {
return pre + cur;
});
console.log(result);
最大值
let result = arr.reduce( (pre,cur) => {
return Math.max(pre,cur);
});
console.log(result);
(7)for in
for in 会把Array.prorotype上的自定义方法也遍历出来,不推荐使用for in 遍历数组
Array.prototype.myFn = function(){};
for(index in arr){
console.log(index,arr[index]);
}