首頁  >  文章  >  web前端  >  JS中數組的迭代方法:filter、reduce、every、some

JS中數組的迭代方法:filter、reduce、every、some

Guanhui
Guanhui轉載
2020-05-09 09:14:192532瀏覽

JS中數組的迭代方法forEach、map、filter、reduce、every、some

在日常處理JS的數組過程中, 我們通常是採用for迴圈的方式來實作. 以下總結一些常用的for迴圈之外的陣列迭代方法.

forEach (迴圈)

讓陣列的每一項分別去做一件事情

let a = [1,2,3];
a.forEach(function(value,i){
    console.log("第" + (i + 1) + "项 :" +  value)
})
// 第1项 :1
// 第2项 :2
// 第3项 :3

map (映射)

跟forEach功能類似, 但是map有回傳值,產生一個新的數組,不改變原來數組

let a = [1,2,3];
a.map(function(value,i){
    return value * 2
})
// 第1项 :2
// 第2项 :4
// 第3项 :6

map與forEach的比較:

// 没有返回值的forEach:
let a = [1, 2, 3];
a = a.forEach(function (value, i) {
    return value * 2 // undefine
})
// 有返回值的map:
let b = [1, 2, 3];
b = b.map(function (value, i) {
    return value * 2 // [2,4,6]
})

可能遇到的坑: map處理完的資料之間多了逗號分隔符號

原因: map遍歷後還是個數組,數組元素之間逗號分隔,插入到DOM時只是呼叫了toString而已,數組元素之間逗號分隔符一起帶進去了,map遍歷後直接把其連接成字串就沒這個問題了

處理辦法: map後面跟上.join('')

reduce (累計)

#reduce() 方法接收一個函數作為累加器,數組中的每個值(從左到右)開始縮減,最終計算為一個值。

reduce() 可以作為一個高階函數,用於函數的 compose。

注意: reduce() 對於空數組是不會執行回呼函數的。

前項與後項做計算

let a = [1, 2, 3];
a = a.reduce(function (prev, next) {
    return prev + next // 1+2+3 = 6
})

filter (過濾)

過濾掉不符合條件的值, 傳回新數組

let a = [1, 2, 3];
a = a.filter(function (value, i) {
    return value > 2 
})
console.log(a) // 3

every (全部)

判斷每一個元素是否全部滿足條件, 有的話回傳true, 否則false

let a = [1, 2, 3];
a = a.every(function (value, i) {
    return value > 2 
})
console.log(a) // false

# some (任意)

判斷每個元素是否有任意一個滿足條件, 有的話回傳true, 否則false

let a = [1, 2, 3];
a = a.every(function (value, i) {
    return value > 2 
})
console.log(a) // true

推薦教程:《JS教程

#

以上是JS中數組的迭代方法:filter、reduce、every、some的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:zhihu.com。如有侵權,請聯絡admin@php.cn刪除