js的Array對象有map、some、every、filter幾個方法都能對數組中的每個對象進行處理,但是他們之間的功能又各有差別,所以在記下。
- map():通過指定函數處理數組的每個元素,並返回處理后的數組。
1 var numbers = [4, 9, 16, 25]; 2 3 function myFunction() { 4 console.log(numbers.map(Math.sqrt)); 5 }
輸出結果為:
2,3,4,5
map() 方法會將數組中元素依次傳入方法中,並將方法的返回結果組成新數組返回。
傳入的function可以有自己的三個形參,currentValue, index,arr分別代表當前元素,元素索引,元素所屬數組對象;其中currentValue是必須的。
注意:map不會改變原數組,map不會檢查空數組
- some():用於檢測數組中的元素是否滿足指定條件(函數提供)
1 var ages = [3, 10, 18, 20]; 2 3 function checkAdult(age) { 4 return age >= 18; 5 } 6 7 function myFunction() { 8 console.log(ages.some(checkAdult)); 9 }
輸出為:true
some方法會依次執行數組的每個元素;
- 如果有一個元素滿足條件,則表達式返回true , 剩余的元素不會再執行檢測
- 如果沒有滿足條件的元素,則返回false
- function形參和map一樣
注意:some不會改變原數組,some不會檢查空數組
- every:用於檢測數組所有元素是否都符合指定條件(通過函數提供)
1 var ages = [32, 33, 16, 40]; 2 3 function checkAdult(age) { 4 return age >= 18; 5 } 6 7 function myFunction() { 8 console.log(ages.every(checkAdult)); 9 }
輸出結果:false
every和some正好相反:
- 如果數組中檢測到有一個元素不滿足,則整個表達式返回 false ,且剩余的元素不會再進行檢測。
- 如果所有元素都滿足條件,則返回 true。
- function形參同上
注意:some不會改變原數組,some不會檢查空數組
- filter:創建一個新的數組,新數組中的元素是通過檢查指定數組中符合條件的所有元素
1 var ages = [32, 33, 16, 40]; 2 3 function checkAdult(age) { 4 return age >= 18; 5 } 6 7 function myFunction() { 8 console.log(ages.filter(checkAdult)); 9 }
輸出結果:
32,33,40
filter會根據函數中的篩選條件將返回的結果組成一個新的數組並返回