JavaScript中find()和?filter()方法的區(qū)別小結(jié)
前言
JavaScript 在 ES6 上有很多數(shù)組方法,每種方法都有獨特的用途和好處。
在開發(fā)應(yīng)用程序時,大多使用數(shù)組方法來獲取特定的值列表并獲取單個或多個匹配項。
在列出這兩種方法的區(qū)別之前,我們先來一一了解這些方法。
JavaScript find() 方法
ES6 find() 方法返回通過測試函數(shù)的第一個元素的值。如果沒有值滿足測試函數(shù),則返回 undefined。
語法
以下語法中使用的箭頭函數(shù)。
find((element) => { /* ... */ } )
find((element, index) => { /* ... */ } )
find((element, index, array) => { /* ... */ } )
我們有一個包含名稱 age 和 id 屬性的用戶對象列表,如下所示:
let users = [{
id:1,
name: 'John',
age: 22
}, {
id:2,
name: 'Tom',
age: 22
}, {
id:3,
name: 'Balaji',
age: 24
}];
以下代碼使用 find() 方法查找年齡大于 23 的第一個用戶。
console.log(users.find(user => user.age > 23));
//console
//{ id: 3, name: 'Balaji', age:24}
現(xiàn)在我們要找到第一個年齡為 22 的用戶
console.log(users.find(user => user.age === 22));
//console
//{ id: 1, name: 'John', age:22}
假設(shè)沒有找到匹配意味著它返回 undefined
console.log(users.find(user => user.age === 25)); //console //undefined
JavaScript filter() 方法
filter() 方法創(chuàng)建一個包含所有通過測試函數(shù)的元素的新數(shù)組。如果沒有元素滿足測試函數(shù),則返回一個空數(shù)組。
語法
filter((element) => { /* ... */ } )
filter((element, index) => { /* ... */ } )
filter((element, index, array) => { /* ... */ } )
我們將使用相同的用戶數(shù)組和測試函數(shù)作為過濾器示例。
以下代碼使用 filter() 方法查找年齡大于 23 的第一個用戶。
console.log(users.filter(user => user.age > 23));
//console
現(xiàn)在我們要過濾年齡為 22 歲的用戶//[{ id: 3, name: 'Balaji', age:24}]
現(xiàn)在我們要過濾年齡為 22 歲的用戶
console.log(users.filter(user => user.age === 22));
//console
//[{ id: 1, name: 'John', age:22},{ id: 2, name: 'Tom', age:22}]
假設(shè)沒有找到匹配意味著它返回一個空數(shù)組
console.log(users.filter(user => user.age === 25)); //console //[]
find() 和 filter() 的區(qū)別與共點
共點
高階函數(shù):這兩個函數(shù)都是高階函數(shù)。
區(qū)別
1、通過一個測試功能
find() 返回第一個元素。
filter() 返回一個包含所有通過測試函數(shù)的元素的新數(shù)組。
2、如果沒有值滿足測試函數(shù)
find() 返回未定義;
filter() 返回一個空數(shù)組;
直接上代碼
let arr = [
{
name: 'Rick',
age: 60
},
{
name: 'Rick',
age: 70
},
{
name: 'Morty',
age: 14
}
]
let findResult = arr.find(i => i.name === 'Rick')
let filterResult = arr.filter(i => i.name === 'Rick')
console.log(arr);
/* 輸出結(jié)果
[
{
name: "Rick",
age: 60
},
{
name: "Rick",
age: 70
},
{
name: "Morty",
age: 14
}
]
*/
console.log(findResult); // {name: "Rick", age: 60}
console.log(filterResult); // [{name: "Rick", age: 60}, {name: "Rick", age: 70}]
根據(jù)以上代碼輸出結(jié)果,可以發(fā)現(xiàn) find 和 filter 都不改變原數(shù)組
總結(jié)
到此這篇關(guān)于JavaScript中find()和filter()方法的區(qū)別小結(jié)的文章就介紹到這了,更多相關(guān)js?find()?和?filter()?方法的區(qū)別內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JavaScript常規(guī)加密技術(shù)實現(xiàn)方式詳解
這篇文章主要為大家介紹了JavaScript常規(guī)加密技術(shù)實現(xiàn)方式詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-04-04
利用JavaScript實現(xiàn)簡單3D開關(guān)書本模型
這篇文章主要為大家詳細介紹了如何利用JavaScript實現(xiàn)簡單3D開關(guān)書本模型的效果,文中的實現(xiàn)代碼講解的非常詳細,具有一定參考價值,感興趣的同學(xué)可以動手嘗試一下2023-11-11
JavaScript中 ?、!和?? 的用法及區(qū)別詳解
在JavaScript中,?., !., 和 ?? 是三個不同的操作符,各自有不同的用途,旨在提高代碼的簡潔性和安全性,尤其是在處理可能的null或undefined值時,下面分別解釋這三個操作符的用法,需要的朋友可以參考下2024-10-10
JavaScript 網(wǎng)頁中實現(xiàn)一個計算當年還剩多少時間的倒數(shù)計時程序
這篇文章主要介紹了JavaScript 網(wǎng)頁中實現(xiàn)一個計算當年還剩多少時間的倒數(shù)計時程序,需要的朋友可以參考下2017-01-01
Bootstrap 樹控件使用經(jīng)驗分享(圖文解說)
很多項目中使用樹來展示層級關(guān)系,還有些樹是為了選中項然后其他地方調(diào)用選中項。今天腳本之家小編給大家?guī)砹薆ootstrap 樹控件使用經(jīng)驗分享,需要的朋友參考下吧2017-11-11
詳解微信小程序中數(shù)據(jù)雙向綁定如何實現(xiàn)
最近在小程序的開發(fā)過程中,需要用到雙向綁定,遇到報錯才知道微信本身是不支持對象雙向綁定的,鏖戰(zhàn)一番找到解決方案,下面這篇文章主要給大家介紹了關(guān)于微信小程序中數(shù)據(jù)雙向綁定如何實現(xiàn)的相關(guān)資料,需要的朋友可以參考下2023-05-05

