JS數組,高階方法


JS數組中高階遍歷方法

filter()#

filter方法檢查數組,刪除不匹配的元素,返回一個新數組

filter方法內部傳入回調函數,回調函數要求必須傳入數組的value
  const arr = [1,2,3,4];
  let newArr = arr.filter(function(n){
    return n<3;
  })
  console.log(newArr)//1,2

map()#

map方法遍歷並處理數組中每個元素,並返回一個新數組

回調函數中傳入的值為數組的value

  const arr = [1,2,3,4];
  let newArr = arr.map(function(n){
    return n*2;
  })
  console.log(newArr)//2,4,6,8

forEach()#

forEach方法為數組每個元素都執行一次回調函數,將元素傳遞給回調函數。

forEach和map的區別是沒有返回值
  const arr = [1,2,3,4];
  arr.forEach(function(item,index){
    let newArr = index+'-'+item*2;
    console.log(newArr)
  })

reduce()#

reduce方法依次處理數組的每個成員,最終累計為一個值。

**建議直接用設置初始值的方法 **

1. 因為reduce方法面對空數組時需要一個初始值,  
2. 如果數組內是對象,在沒有初始值方法中,第一次遍歷previousValue是一個成員需要計算
使用方法

該方法接收的第一個參數為函數,第二個為初始值

函數中又接收兩個參數,(之前的返回值,當前值)

reduce(function(之前的返回值,當前值){},初始值)
沒有初始值

函數內參數1為數組第一個成員,參數2為數組第二個成員
參數1為第一次遍歷的返回值,參數2為數組依次遍歷的值,直到完成

const arr = [1,2,3,4,5]
let newArr = arr.reduce(function (preValue,nowValue) {
  return preValue+nowValue;
})
console.log(newArr);
//1 2
//3 3
//6 4
//10 5
//最后結果15
設置了初始值

第一次遍歷初始值與數組第一個成員
第二次遍歷時參數1為返回值,參數2為數組依次遍歷的值,直到完成

const arr = [1,2,3,4,5]
let newArr = arr.reduce(function (preValue,nowValue) {
  return preValue+nowValue;
},10)
console.log(newArr);
//10 1
//11 2
//13 3
//16 4
//20 5
//最后結果25

find()#

find方法遍歷數組,返回符合條件的子元素

內如果判斷為true,則返回item。

  const arr = [1,2,3,4]
  let arrItem =  arr.find(function(n){
    return n==2;
  });
  console.log(arrItem);
  //2

every()#

every方法用於檢測數組內所有元素是否都符合條件,返回布爾值

如果數組有一個元素不滿足,則整個表達式返回 false,並剩余元素不會再檢測

every不會對空數組進行檢測
every不會改變原始數組

  const  arr = [1,2,3,4]
  let isTrue = arr.every(function(n){
    return n>2;
  })
  console.log(isTrue);
  //false

some()#

every方法用於檢測數組內所有元素只要有一個符合條件,返回布爾值

如果數組的元素都不滿足,則整個表達式返回 false

var arr = [1,2,3,4,5];

var newArr2 = arr.some(function(item,index){
    return item == 2;
})
console.log(newArr2);


免責聲明!

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



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