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