JavaScript中find()和?filter()方法的區(qū)別小結
前言
JavaScript 在 ES6 上有很多數(shù)組方法,每種方法都有獨特的用途和好處。
在開發(fā)應用程序時,大多使用數(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}
假設沒有找到匹配意味著它返回 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ù)組
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); /* 輸出結果 [ { 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ù)以上代碼輸出結果,可以發(fā)現(xiàn) find 和 filter 都不改變原數(shù)組
總結
到此這篇關于JavaScript中find()和filter()方法的區(qū)別小結的文章就介紹到這了,更多相關js?find()?和?filter()?方法的區(qū)別內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
JavaScript常規(guī)加密技術實現(xiàn)方式詳解
這篇文章主要為大家介紹了JavaScript常規(guī)加密技術實現(xiàn)方式詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-04-04利用JavaScript實現(xiàn)簡單3D開關書本模型
這篇文章主要為大家詳細介紹了如何利用JavaScript實現(xiàn)簡單3D開關書本模型的效果,文中的實現(xiàn)代碼講解的非常詳細,具有一定參考價值,感興趣的同學可以動手嘗試一下2023-11-11JavaScript中 ?、!和?? 的用法及區(qū)別詳解
在JavaScript中,?., !., 和 ?? 是三個不同的操作符,各自有不同的用途,旨在提高代碼的簡潔性和安全性,尤其是在處理可能的null或undefined值時,下面分別解釋這三個操作符的用法,需要的朋友可以參考下2024-10-10JavaScript 網(wǎng)頁中實現(xiàn)一個計算當年還剩多少時間的倒數(shù)計時程序
這篇文章主要介紹了JavaScript 網(wǎng)頁中實現(xiàn)一個計算當年還剩多少時間的倒數(shù)計時程序,需要的朋友可以參考下2017-01-01Bootstrap 樹控件使用經(jīng)驗分享(圖文解說)
很多項目中使用樹來展示層級關系,還有些樹是為了選中項然后其他地方調(diào)用選中項。今天腳本之家小編給大家?guī)砹薆ootstrap 樹控件使用經(jīng)驗分享,需要的朋友參考下吧2017-11-11詳解微信小程序中數(shù)據(jù)雙向綁定如何實現(xiàn)
最近在小程序的開發(fā)過程中,需要用到雙向綁定,遇到報錯才知道微信本身是不支持對象雙向綁定的,鏖戰(zhàn)一番找到解決方案,下面這篇文章主要給大家介紹了關于微信小程序中數(shù)據(jù)雙向綁定如何實現(xiàn)的相關資料,需要的朋友可以參考下2023-05-05