JS中關(guān)于filter()方法的使用及說明
關(guān)于filter()方法的使用
常見的場景:當(dāng)我們從后端請求到數(shù)據(jù)列表時(shí),我們需要對其中符合條件的數(shù)據(jù)進(jìn)行篩選、當(dāng)我們拿到數(shù)據(jù),我們希望把英文首字母大寫,數(shù)組去重等等。
定義和用法
filter
用于對數(shù)組進(jìn)行過濾。filter()
方法創(chuàng)建一個(gè)新的數(shù)組,新數(shù)組中的元素是通過檢查指定數(shù)組中符合條件的所有元素。
注意:
filter() 不會(huì)對空數(shù)組進(jìn)行檢測;不會(huì)改變原始數(shù)組
語法
array.filter(function(currentValue,index,arr), thisValue)
返回值:
返回?cái)?shù)組,包含了符合條件的所有元素。如果沒有符合條件的元素則返回空數(shù)組。
實(shí)例
實(shí)例1
返回?cái)?shù)組nums中所有大于5的元素。
let nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; let res = nums.filter((num) => { return num > 5; }); console.log(res); // [6, 7, 8, 9, 10]
實(shí)例2
對數(shù)組進(jìn)行過濾,篩選出年齡大于 18歲的數(shù)據(jù)
const arr = [ { name: 'tom1', age: 23 }, { name: 'tom2', age: 42 }, { name: 'tom3', age: 17 }, { name: 'tom4', age: 13 }, ] const res = arr.filter(item => item.age > 18); console.log(res); //[{name: 'tom1',age: 23},{name: 'tom2',age: 42}] console.log(arr);
實(shí)例3
利用 filter 遍歷出所有偶數(shù)
let arr = [56, 15, 48, 3, 7]; let newArr = arr.filter(function (x) { return x % 2 === 0; }); console.log(newArr) // [56, 48]
實(shí)例4
把一個(gè)Array中的空字符串刪掉,可以這么寫:
var arr = ['A', '', 'B', null, undefined, 'C', ' ']; var r = arr.filter(function (s) { return s && s.trim(); // 注意:IE9以下的版本沒有trim()方法 }); r; // ['A', 'B', 'C']
實(shí)例5
利用 filter 進(jìn)行數(shù)組去重
function unique(arr) { return arr.filter(function(item, index, arr) { //當(dāng)前元素,在原始數(shù)組中的第一個(gè)索引==當(dāng)前索引值,否則返回當(dāng)前元素 return arr.indexOf(item, 0) === index; }); } var arr = [1,1,'RUNOOB','RUNOOB',true,true,15]; console.log(unique(arr)) // [1, "RUNOOB", true, 15]
var arr = ['apple','strawberry','banana','pear','apple','orange','orange','strawberry'] var temp_arr = arr.filter(function (element, index, self) { return self.indexOf(element) === index }) console.log(temp_arr)
indexOf總是返回第一個(gè)元素的位置,后續(xù)的重復(fù)元素位置與indexOf返回的位置不相等,因此被filter濾掉了,所以重復(fù)的元素僅會(huì)保留第一個(gè)位置的元素
filter()和indexO一起使用能做啥
分開使用
第一:js中indexof()檢測字符在字符串中首次出現(xiàn)的位置(下標(biāo)),若未匹配到則返回-1。
注意:檢測的字符不能為空哦,否則會(huì)返回第一個(gè)字符的下標(biāo)。
第二:js中的filter的方法,篩選數(shù)組中符合條件的,將每一次符合條件的字符放入新數(shù)組中!
結(jié)合使用
場景一:去除數(shù)組中重復(fù)字符
場景2:去除數(shù)組對象中的重復(fù)對象
只有掌握好零星的知識(shí)點(diǎn),才能懂的結(jié)合一起使用!
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
JavaScript 驗(yàn)證瀏覽器是否支持javascript的方法小結(jié)
一些網(wǎng)站只有客戶端js的驗(yàn)證,這樣就給一些hacher一些可趁之機(jī)了,不信大家測試一些網(wǎng)站的注冊功能看看,有部分網(wǎng)站只有客戶端驗(yàn)證,我為了達(dá)到客戶端驗(yàn)證,先是判斷瀏覽器是否支持js,如果不支持,提示信息,然后屏蔽掉發(fā)送按鈕2009-05-05javascript createElement()創(chuàng)建input不能設(shè)置name屬性的解決方法
今天在使用document.createElement()動(dòng)態(tài)創(chuàng)建input時(shí),發(fā)現(xiàn)不能為其name賦值,以下是測試代碼。2009-10-10js實(shí)現(xiàn)隨屏幕滾動(dòng)的帶緩沖效果的右下角廣告代碼
這篇文章主要介紹了js實(shí)現(xiàn)隨屏幕滾動(dòng)的帶緩沖效果的右下角廣告代碼,涉及javascript基于數(shù)學(xué)運(yùn)算及定時(shí)函數(shù)動(dòng)態(tài)操作頁面元素的實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-09-09基于JavaScript實(shí)現(xiàn)前端數(shù)據(jù)多條件篩選功能
這篇文章主要為大家詳細(xì)介紹了基于JavaScript實(shí)現(xiàn)前端數(shù)據(jù)多條件篩選功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-09-09JavaScript對象與數(shù)組的幾種常見復(fù)制方法
在 JavaScript 開發(fā)中,對象和數(shù)組的復(fù)制是一個(gè)非常常見的操作,無論是函數(shù)參數(shù)傳遞、狀態(tài)管理,還是避免不必要的副作用,了解和掌握各種復(fù)制方式至關(guān)重要,我們將系統(tǒng)梳理 JavaScript 中的幾種常見復(fù)制方法,并對其應(yīng)用場景進(jìn)行詳細(xì)說明,需要的朋友可以參考下2024-10-10