js中map()、some()、every()、filter()的區別


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會根據函數中的篩選條件將返回的結果組成一個新的數組並返回


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM