您好,登錄后才能下訂單哦!
這篇文章主要介紹JavaScript Array.filter()怎么遍歷數(shù)組中的元素,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
該filter()
方法接受一個回調(diào)函數(shù),并為它在目標(biāo)數(shù)組內(nèi)迭代的每個項目調(diào)用該函數(shù)。回調(diào)函數(shù)可以接受以下參數(shù):
currentItem
:這是當(dāng)前正在迭代的數(shù)組中的元素。
index
: 這是currentItem
數(shù)組內(nèi)部的索引位置。
array
:這表示目標(biāo)數(shù)組及其所有項目。
filter 方法創(chuàng)建一個新數(shù)組并返回所有滿足回調(diào)中指定條件的項目。
在以下示例中,我將演示如何從 JavaScript 中的數(shù)組中過濾項目中使用filter()
方法。
在這個例子中,我們過濾掉每個蹣跚學(xué)步的人(年齡介于 0 和 4 之間)。
let people = [
{name: "aaron",age: 65},
{name: "beth",age: 2},
{name: "cara",age: 13},
{name: "daniel",age: 3},
{name: "ella",age: 25},
{name: "fin",age: 1},
{name: "george",age: 43},
]
let toddlers = people.filter(person => person.age <= 3)
console.log(toddlers)
/*
[{
age: 2,
name: "beth"
}, {
age: 3,
name: "daniel"
}, {
age: 1,
name: "fin"
}]
*/
在這個例子中,我們將只過濾掉開發(fā)人員的團隊成員。
let team = [
{
name: "aaron",
position: "developer"
},
{
name: "beth",
position: "ui designer"
},
{
name: "cara",
position: "developer"
},
{
name: "daniel",
position: "content manager"
},
{
name: "ella",
position: "cto"
},
{
name: "fin",
position: "backend engineer"
},
{
name: "george",
position: "developer"
},
]
let developers = team.filter(member => member.position == "developer")
console.log(developers)
/*
[{
name: "aaron",
position: "developer"
}, {
name: "cara",
position: "developer"
}, {
name: "george",
position: "developer"
}]
*/
在上面的例子中,我們過濾掉了開發(fā)人員。但是如果我們想過濾掉每個不是開發(fā)人員的成員呢?
我們可以這樣做:
let team = [
{
name: "aaron",
position: "developer"
},
{
name: "beth",
position: "ui designer"
},
{
name: "cara",
position: "developer"
},
{
name: "daniel",
position: "content manager"
},
{
name: "ella",
position: "cto"
},
{
name: "fin",
position: "backend engineer"
},
{
name: "george",
position: "developer"
},
]
let nondevelopers = team.filter(member => member.position !== "developer")
console.log(nondevelopers)
/*
[
{
name: "beth",
position: "ui designer"
},
{
name: "daniel",
position: "content manager"
},
{
name: "ella",
position: "cto"
},
{
name: "fin",
position: "backend engineer"
}
]
*/
這是一場比賽。本次比賽共有三名獲勝者。第一名獲得金牌,第二名獲得銀牌,第三名獲得銅牌。
通過在每次迭代中使用filter
和訪問index
每個項目的屬性,我們可以將三個獲勝者中的每一個過濾到不同的變量中。
let winners = ["Anna", "Beth", "Cara"]
let gold = winners.filter((winner, index) => index == 0)
let silver = winners.filter((winner, index) => index == 1)
let bronze = winners.filter((winner, index) => index == 2)
console.log(Gold winner: ${gold}, Silver Winner: ${silver}, Bronze Winner: ${bronze})
// "Gold winner: Anna, Silver Winner: Beth, Bronze Winner: Cara"
第三個參數(shù)(數(shù)組)最常見的用途之一是檢查正在迭代的數(shù)組的狀態(tài)。例如,我們可以檢查數(shù)組中是否還有其他項。根據(jù)結(jié)果,我們可以指定不同的事情應(yīng)該發(fā)生。
在這個例子中,我們將定義一個包含四個人的數(shù)組。但是,由于只能有三個獲勝者,因此列表中的第四個人將不得不打折。
為了能夠做到這一點,我們需要在每次迭代中獲取有關(guān)目標(biāo)數(shù)組的信息。
let competitors = ["Anna", "Beth", "Cara", "David"] function displayWinners(name, index, array) { let isNextItem = index + 1 < array.length ? true : false if (isNextItem) { console.log(`The No${index+1} winner is ${name}.`); } else { console.log(`Sorry, ${name} is not one of the winners.`) } } competitors.filter((name, index, array) => displayWinners(name, index, array)) /* "The No1 winner is Anna." "The No2 winner is Beth." "The No3 winner is Cara." "Sorry, David is not one of the winners." */
除了回調(diào)函數(shù)之外,該filter()
方法還可以接收上下文對象。
filter(callbackfn, contextobj)
然后可以使用this
關(guān)鍵字引用從回調(diào)函數(shù)內(nèi)部引用此對象。
這將類似于example 1
. 我們將過濾掉所有年齡在 13 到 19 歲之間的人(青少年)。
但是,我們不會對回調(diào)函數(shù)內(nèi)部的值進行硬編碼。相反,我們將這些值 13 和 19 定義為range
對象內(nèi)部的屬性,隨后我們將其filter
作為上下文對象(第二個參數(shù))傳入 。
let people = [
{name: "aaron", age: 65},
{name: "beth", age: 15},
{name: "cara", age: 13},
{name: "daniel", age: 3},
{name: "ella", age: 25},
{name: "fin", age: 16},
{name: "george", age: 18},
]
let range = {
lower: 13,
upper: 16
}
let teenagers = people.filter(function(person) {
return person.age >= this.lower && person.age <= this.upper;
}, range)
console.log(teenagers)
/*
[{
age: 15,
name: "beth"
}, {
age: 13,
name: "cara"
}, {
age: 16,
name: "fin"
}]
*/
我們將range
對象作為第二個參數(shù)傳遞給filter()
。那時,它成為了我們的上下文對象。因此,我們能夠分別使用this.upper
和this.lower
引用訪問回調(diào)函數(shù)中的上限和下限。
以上是“JavaScript Array.filter()怎么遍歷數(shù)組中的元素”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。