JS中關于filter()方法的使用及說明
關于filter()方法的使用
常見的場景:當我們從后端請求到數據列表時,我們需要對其中符合條件的數據進行篩選、當我們拿到數據,我們希望把英文首字母大寫,數組去重等等。
定義和用法
filter
用于對數組進行過濾。filter()
方法創(chuàng)建一個新的數組,新數組中的元素是通過檢查指定數組中符合條件的所有元素。
注意:
filter() 不會對空數組進行檢測;不會改變原始數組
語法
array.filter(function(currentValue,index,arr), thisValue)
返回值:
返回數組,包含了符合條件的所有元素。如果沒有符合條件的元素則返回空數組。
實例
實例1
返回數組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]
實例2
對數組進行過濾,篩選出年齡大于 18歲的數據
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);
實例3
利用 filter 遍歷出所有偶數
let arr = [56, 15, 48, 3, 7]; let newArr = arr.filter(function (x) { return x % 2 === 0; }); console.log(newArr) // [56, 48]
實例4
把一個Array中的空字符串刪掉,可以這么寫:
var arr = ['A', '', 'B', null, undefined, 'C', ' ']; var r = arr.filter(function (s) { return s && s.trim(); // 注意:IE9以下的版本沒有trim()方法 }); r; // ['A', 'B', 'C']
實例5
利用 filter 進行數組去重
function unique(arr) { return arr.filter(function(item, index, arr) { //當前元素,在原始數組中的第一個索引==當前索引值,否則返回當前元素 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總是返回第一個元素的位置,后續(xù)的重復元素位置與indexOf返回的位置不相等,因此被filter濾掉了,所以重復的元素僅會保留第一個位置的元素
filter()和indexO一起使用能做啥
分開使用
第一:js中indexof()檢測字符在字符串中首次出現的位置(下標),若未匹配到則返回-1。
注意:檢測的字符不能為空哦,否則會返回第一個字符的下標。
第二:js中的filter的方法,篩選數組中符合條件的,將每一次符合條件的字符放入新數組中!
結合使用
場景一:去除數組中重復字符
場景2:去除數組對象中的重復對象
只有掌握好零星的知識點,才能懂的結合一起使用!
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
JavaScript 驗證瀏覽器是否支持javascript的方法小結
一些網站只有客戶端js的驗證,這樣就給一些hacher一些可趁之機了,不信大家測試一些網站的注冊功能看看,有部分網站只有客戶端驗證,我為了達到客戶端驗證,先是判斷瀏覽器是否支持js,如果不支持,提示信息,然后屏蔽掉發(fā)送按鈕2009-05-05javascript createElement()創(chuàng)建input不能設置name屬性的解決方法
今天在使用document.createElement()動態(tài)創(chuàng)建input時,發(fā)現不能為其name賦值,以下是測試代碼。2009-10-10