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() 不會對空數(shù)組進(jìn)行檢測;不會改變原始數(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ù)的元素僅會保留第一個(gè)位置的元素
filter()和indexO一起使用能做啥
分開使用
第一:js中indexof()檢測字符在字符串中首次出現(xiàn)的位置(下標(biāo)),若未匹配到則返回-1。

注意:檢測的字符不能為空哦,否則會返回第一個(gè)字符的下標(biāo)。

第二:js中的filter的方法,篩選數(shù)組中符合條件的,將每一次符合條件的字符放入新數(shù)組中!

結(jié)合使用
場景一:去除數(shù)組中重復(fù)字符

場景2:去除數(shù)組對象中的重復(fù)對象

只有掌握好零星的知識點(diǎn),才能懂的結(jié)合一起使用!
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
微信小程序開發(fā)之實(shí)現(xiàn)自定義Toast彈框
Toast相信對于利用微信小程序開發(fā)的朋友們來說都不陌生,有時(shí)候官方的樣式并不能滿足業(yè)務(wù)要求,怎么辦呢,當(dāng)然有解決辦法了。有一個(gè)插件可以直接幫我們完成WeToast,這篇文章主要給大家介紹了微信小程序開發(fā)之實(shí)現(xiàn)自定義Toast彈框的相關(guān)資料,需要的朋友可以參考下。2017-06-06
優(yōu)化 JavaScript 代碼的方法小結(jié)
客戶端腳本能讓你的應(yīng)用更加地動態(tài)和活躍, 但是瀏覽器對代碼的解析可能造成效率問題, 而這種性能差異在客戶端之間也不盡相同。 這里我們討論和給出一些優(yōu)化你的 JavaScript 代碼的提示和最佳實(shí)踐。2009-07-07
JS實(shí)現(xiàn)圖片垂直居中顯示小結(jié)
本文給大家分享了4中圖片垂直居中顯示的效果,非常不錯,具有參考借鑒價(jià)值,感興趣的朋友一起看看吧2016-12-12

