遍历数组的几种方式

1.for 循环

for(j = 0; j < arr.length; j++) {
   
} 

 

2.forEach   最简单、最常用的数组遍历方法。它提供一个回调函数,可用于处理数组的每一个元素,默认没有返回值。 遍历开始以后无法停止。

arr.forEach(function(e){  
   
});

 

3.map 会映射返回一个新数组,不会改变原数组的值

var array = arr.map((item,index)=>{
    
})

 

4.filter 过滤数组,返回一个新的数组,原数组的元素执行了回调函数之后返回值若为true,则会将这个元素放入返回的数组中。

var newarr = arr.filter((item,index)=>{
   return 条件 
})
// 例子:筛选出数组arr中所有负数
var arr = [1,-2,3,4,-5]
var minus = arr.filter(function(item,index,array){
    return item < 0;
});
console.log(minus);   // [-2, -5]

 

5.some 遍历整个数组,返回值true就停止循环(返回false继续循环)返回布尔值 多用于判断数组中是否存在

arr.every(function(value, index, array){
    // arr中有几项,该匿名回调函数就需要执行几次
    // value —— 数组中的当前项
    // index —— 当前项的索引
    // array —— 原始数组
    return xxx
})

//例子:判断arr中的元素是否都为正数
var arr = [1,-2,3,4,-5]
var isEvery = arr.every(function(item, index, array){
    return item > 0
})
console.log(isEvery) // false

 

6.every 与some相反,返回false就停止循环(返回true就继续循环) 返回的是一个布尔值 多用于判断数组中是否存在之类

arr.some(function(value, index, array){
    // arr中有几项,该匿名回调函数就需要执行几次
    // value —— 数组中的当前项
    // index —— 当前项的索引
    // array —— 原始数组
    return xxx
})

//例子:判断数组arr中是否存在负数
var arr = [1,-2,3,4,-5]
var isSome = arr.some(function(item,index,array){
    return item < 0;
});
console.log(isSome);   // true

 

7.reduce 实现数据的累加

arr.reduce(function(prev, cur, index, array){
    // array——原数组
    // prev——上一次调用回调时的返回值,或者初始值init
    // cur——当前正在处理的数组元素
    // index——当前正在处理的数组元素的索引
    // init——初始值
}, init)

//求和
var sum = arr.reduce(function (prev, cur) {
    return prev + cur;
},0);

//取最大值
var max = arr.reduce(function (prev, cur) {
    return Math.max(prev,cur);
});

 

8.for..of ES6中,新增了for-of遍历方法。它被设计用来遍历各种类数组集合,例如DOM NodeList对象、Map和Set对象,甚至字符串也行。

// for-of遍历数组,不带索引,i即为数组元素
for ( let  i of arrTmp){
     console.log(i)
}
//输出 "value1" "value2" "value3"
 
// for-of遍历Map对象
let  iterable =  new  Map([[ "a" , 1], [ "b" , 2], [ "c" , 3]]);
for  ( let  [key, value] of iterable) {
   console.log(value);
}
//输出 1 2 3
 
// for-of遍历字符串
let  iterable =  "china中国" ;
for  ( let  value of iterable) {
   console.log(value);
}
//输出 "c" "h" "i" "n" "a" "中" "国"

顺带记录以下for...of...与for..in...的区别

for...in...只能获得对象的键名,不能获得键值

for...of...允许遍历获得键值

var arr = ['red', 'green', 'blue']
 
for(let item in arr) {
  console.log('for in item', item)
}
/*
  for in item 0
  for in item 1
  for in item 2
*/
 
for(let item of arr) {
  console.log('for of item', item)
}
/*
  for of item red
  for of item green
  for of item blue
*/

 

posted @ 2021-05-22 11:20  BenBonBen  阅读(4721)  评论(0编辑  收藏  举报