JavaScript中Filter方法的作用是篩選數(shù)組中符合條件的元素并生成新數(shù)組。其基本用法是接收一個(gè)返回布爾值的回調(diào)函數(shù),只有返回true的元素才會(huì)被保留。1.常用于過(guò)濾對(duì)象數(shù)組中的特定項(xiàng),如篩選年齡大于等于20的用戶(hù);2.支持多條件篩選,例如選擇價(jià)格高于90且?guī)齑娉渥愕奈锲罚?.可用于去重或排除指定元素,如去掉所有數(shù)值為2的元素。使用時(shí)需注意:filter不會(huì)修改原數(shù)組,空數(shù)組不執(zhí)行回調(diào),性能敏感場(chǎng)景建議手動(dòng)優(yōu)化循環(huán)。
在JavaScript中,filter 方法的作用是從數(shù)組中篩選出符合條件的元素,生成一個(gè)新數(shù)組。它不會(huì)修改原數(shù)組,而是通過(guò)遍歷每個(gè)元素,根據(jù)你提供的判斷條件來(lái)決定是否保留該元素。
簡(jiǎn)單說(shuō):filter 就是用來(lái)“挑出”你想要的數(shù)據(jù)的工具。
一、filter 的基本用法
filter 接收一個(gè)回調(diào)函數(shù)作為參數(shù),這個(gè)函數(shù)會(huì)在每個(gè)元素上執(zhí)行一次。只有當(dāng)回調(diào)返回 true 時(shí),當(dāng)前元素才會(huì)被加入結(jié)果數(shù)組中。
語(yǔ)法如下:
array.filter(function(currentValue, index, arr), thisArg)
常用的參數(shù)是第一個(gè)(當(dāng)前值)和第二個(gè)(索引),第三個(gè)較少用到。
舉個(gè)簡(jiǎn)單例子:
const numbers = [10, 20, 30, 40, 50]; const filtered = numbers.filter(num => num > 25); console.log(filtered); // [30, 40, 50]
上面這段代碼的意思是:從 numbers 數(shù)組中挑出所有大于 25 的數(shù)字,組成一個(gè)新數(shù)組。
二、實(shí)際應(yīng)用中的常見(jiàn)場(chǎng)景
filter 在開(kāi)發(fā)中最常見(jiàn)的用途就是數(shù)據(jù)篩選,比如過(guò)濾用戶(hù)列表、商品信息、日志等。
1. 過(guò)濾對(duì)象數(shù)組中的特定項(xiàng)
const users = [ { name: 'Tom', age: 22 }, { name: 'Jerry', age: 30 }, { name: 'Lucy', age: 18 } ]; const adults = users.filter(user => user.age >= 20); // 返回年齡大于等于20的用戶(hù)
2. 多條件篩選
你可以結(jié)合多個(gè)判斷條件,比如查找價(jià)格高于某個(gè)值并且?guī)齑娉渥愕纳唐罚?/p>
const products = [ { name: 'A', price: 100, stock: 5 }, { name: 'B', price: 200, stock: 0 }, { name: 'C', price: 150, stock: 10 } ]; const validProducts = products.filter(p => p.price > 90 && p.stock > 0);
3. 去重或排除某些元素
比如你想從數(shù)組中去掉某些特定值:
const nums = [1, 2, 3, 2, 4]; const unique = nums.filter(n => n !== 2); // 去掉所有2 // 結(jié)果是 [1, 3, 4]
三、使用 filter 時(shí)需要注意的地方
- 不要改變?cè)瓟?shù)組:filter 不會(huì)修改原始數(shù)組,而是返回一個(gè)新數(shù)組。
- 返回 true 才保留:只有回調(diào)函數(shù)返回 true 的時(shí)候,當(dāng)前元素才會(huì)保留在新數(shù)組中。
- 空數(shù)組不會(huì)執(zhí)行回調(diào):如果數(shù)組為空,filter 不會(huì)執(zhí)行回調(diào)函數(shù)。
- 注意性能問(wèn)題:filter 是遍歷整個(gè)數(shù)組的,如果你提前知道某些條件可以跳出循環(huán),建議手動(dòng)用 for 循環(huán)優(yōu)化。
基本上就這些。
filter 方法雖然簡(jiǎn)單,但非常實(shí)用。在處理數(shù)組數(shù)據(jù)的時(shí)候,它是必不可少的工具之一。只要掌握好寫(xiě)判斷條件的方式,就能靈活應(yīng)對(duì)各種篩選需求。