最近在看關(guān)于jq的相關(guān)內(nèi)容正好看到了關(guān)于數(shù)組篩選的相關(guān)內(nèi)容就做了些整理狂票。
篩選數(shù)組是對需要頻繁處理大量數(shù)據(jù)的應(yīng)用來說的并且遍歷數(shù)組主要是查找(篩選)匹配一定標(biāo)準(zhǔn)的元素。數(shù)組中我們在查找高于或低于特定臨界值熙暴,或者可能是匹配一些數(shù)據(jù)時苫亦,jq就提供了一個函數(shù)$.grep()。
$.grep() 方法是按照某種條件來過濾數(shù)組怨咪。
$.grep(array,callback,invert) //調(diào)用的方式
array:待過濾數(shù)組;
callback:處理數(shù)組中的每個元素屋剑,并過濾元素,該函數(shù)中包含兩個參數(shù)诗眨,第一個是當(dāng)前數(shù)組元素的值唉匾,一個是當(dāng)前數(shù)組元素的下標(biāo),即元素索引值匠楚。此函數(shù)應(yīng)返回一個布爾值巍膘。
invert:布爾型可選項,默認(rèn)值false芋簿,值為true或false峡懈, 如果 “invert” 為 false 或為設(shè)置,則函數(shù)返回數(shù)組中由過濾函數(shù)返回 true 的元素与斤,當(dāng)”invert” 為 true肪康,則返回過濾函數(shù)中返回 false 的元素集荚恶。
var arr=$.grep([0,1,2,3,4,5,6],function(n,i){
return n>2
});
上面的例子返回[3,4,5,6],但是我們給invert的值為true磷支,例如
var arr=$.grep([0,1,2,3,4,5,6],function(n,i){
return n>2
},ture);
所以現(xiàn)在返回的是[0,1,2]谒撼,也就是被callback函數(shù)過濾掉的元素。
再來個例子看看$.grep()
var nums = '1,2,3,4,5,jQuery,CSS,5'.split(',');
如果我們想找出其中的字符串雾狈,我們可以直接使用 $.grep() 方法來完成:
nums = $.grep(nums, function (num, index) {
// num = 數(shù)組元素的當(dāng)前值
// index = 當(dāng)前值的下標(biāo)
return isNaN(num);}); //isNaN() 函數(shù)用于檢查其參數(shù)是否是非數(shù)字值廓潜。
console.log(nums); //結(jié)果為: ["jQuery", "CSS"]
看到這肯定都想到了$.map() 方法也可將一個數(shù)組轉(zhuǎn)換為另一個數(shù)組,所以善榛,使用 $.map() 方法也可以完成上面例子中的要求辩蛋,如下:
nums = $.map(nums, function (num, index) {
//和$.grep() 的區(qū)別
//return isNaN,得到結(jié)果為:[true, true]
return isNaN(num) ? num : null;});
console.log(nums); // ["jQuery", "CSS"]