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
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
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
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的元素是會被列出的數組
var arr = ["first","second",'third' ,"fourth"]; var arr2 = arr.map(function(item){ return item.toUpperCase(); }) console.log(arr2); //輸出: [FIRST,SECOND,THIRD, FOURTH]
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]
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
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