一、原生js Array給我們提供很多了方法。方便我們操作數組.這些方法的參數,都需要傳入一個匿名函數,匿名函數中有三個參數,分別含義是:數組中的項、該項的索引、以及數組本身。
1、filter方法:對數組每一項執行匿名函數,並返回符合條件的數組的項。
1 var testArr=[1,2,3,4,52,2]; 2 //filter 方法 3 var moreTwo=testArr.filter(function(item,index,array){ 4 return item >2; 5 }); 6 console.log(moreTwo);
2、map方法:對數組中每一項進行操作,返回值為匿名函數操作的所有項。
1 var addTwo=testArr.map(function(item,index,ar){ 2 return item+=2 3 }); 4 console.log(addTwo);
3、every()和some()方法:對傳入的匿名函數進進行判斷,這兩個函數返回值為:boolean值,every()返回所有項滿足給定條件時返回true,而some(),只要有一個滿足條件就返回true。
1 var everBoolean=testArr.every(function(val,index,arr){ 2 return val>2; 3 }); 4 var someBoolean=testArr.some(function(v,i,arr){ 5 return i>2 6 }); 7 console.log(everBoolean,someBoolean);
4、forEach() 沒有返回值,只是對於數組中每一項執行操作。
1 var forEachVal=testArr.forEach(function(v,i,arr){ 2 return v+=2; 3 } ) 4 console.log(testArr,forEachVal);
二、 總結:
上面的方法並沒有修改原先的數組結構,而是需要我們創建一個新的副本進行儲存符合我們的條件的值或者進行一些邏輯判斷。而jquery 框架中,可以直接進行修改,但是我們也進行修改,因為在匿名的函數中第三個參數就是當前傳入值為我們之前定義的數組的指針,所以我們可以進行修改。
但是這些方法對於我們來說滿足我們日常的需求。
1 var addModTwo=testArr.map(function(item,index,ar){ 2 ar[index]=item+2; 3 return item+=2 4 }); 5 console.log(testArr)
所以靈活使用上面的方法,來解決實際問題。