數組遍歷的幾種經常使用方法

1.最傳統方法 for循環

 var arr = ["first","second","third","fourth",100,200,300];
 for(var i = 0; i < arr.length;i++){
        console.log(arr[i]);
    }
    //輸出:
     first
     second
     third
     fourth
     100
     200
     300

  

  for… in

var arr = ["first","second",'third' ,"fourth",100,200,300];
for(var i in arr){
     console.log(arr[i] +'/' + i);
 }
 //輸出結果爲:
     first/0
     second/1
     third/2
     fourth/3
     100/4
     200/5
     300/6

  

for…of

var arr = ["first","second",'third' ,"fourth",1,2,3];
 for(var item of arr){
     console.log(item);
 }
 //輸出結果:
     first
     second
     third
     fourth
     1
     2
     3

  

雖然for… in 、 for… of 都可以變歷數組,可是二者仍是有很大區別的,先說結論:javascript

       二者的主要區別在於他們的迭代方式 java

  • 推薦在循環對象屬性的時候,使用for in,在遍歷數組的時候推薦使用for of
  • for…in 循環出來的是key, for…of循環出來的是value
  • for…in 是ES5 標準,for …of 是ES6標準,兼容性可能存在些問題,請注意使用
  • for…of 不能遍歷普通的對象,須要和Object.keys() 搭配使用

2.foreach方法:被傳遞給foreach的函數會在數組的每一個元素上執行一次,元素做爲參數傳遞給該函數

var arr = ["first","second","third","fourth",100,200,300];
    //element 表示arr的單元項,index 表示arr單元項對應的索引值
    arr.forEach(function(element,index){
        console.log(element + '/' + index);

    })
    //輸出結果:
      first/0
      second/1
      third/2
      fourth/3
      100/4
      200/5
      300/6

  注意:未賦值的值是不會在foreach循環迭代的,可是手動賦值爲undefined的元素是會被列出的數組

3.map 遍歷數組,並經過callback對數組元素進行操做,並將全部操做結果放入數組中並返回該數組

 

 var arr = ["first","second",'third' ,"fourth"];
 var arr2 = arr.map(function(item){
    return item.toUpperCase();
 })
 console.log(arr2);
 //輸出:
 [FIRST,SECOND,THIRD, FOURTH]

 

  

4.filter( )返回一個包含全部在回調函數上返回爲true的元素新數組,回調函數在此擔任的是過濾器的角色,當元素符和條件,過濾器就返回true,而filter則會返回全部符合過濾條件的元素

var arr = ["first","second",'third' ,"fourth",100,200,300];
    var arr3 = arr.filter(function(item){
        if(typeof item == 'number'){
            return item;
        }
    })
    console.log(arr3);
    //輸出結果: 
    [100,200,300]  

  

5. every() 當數組中的每個元素在callback上被返回true時就返回true(注意:要求每個單元項都返回true時才爲true)

every()與filter()的區別是:後者會返回全部符合過濾條件的元素;前者會判斷是否是數組中的全部元素都符合條件,而且返回的是布爾值函數

var arr = ["first","second",'third' ,"fourth",100,200,300];
var bol = arr.every(function(element){
    if(typeof element == 'string'){
        return element;
    }
 })
 console.log(bol); //false

  

6.some()只要數組中有一項在callback上就返回true

every()與some()的區別是:前者要求全部元素都符合條件才返回true,後者要求只要有符合條件的就返回truespa

var arr = ["first","second",'third' ,"fourth",100,200,300];
    var bol = arr.some(function(element){
        if(typeof element == 'string'){
            return element;
        }
    })
    console.log(bol); //true
相關文章
相關標籤/搜索