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);