最近在看關(guān)于jq的相關(guān)內(nèi)容正好看到了關(guān)于數(shù)組篩選的相關(guān)內(nèi)容就做了些整理。
篩選數(shù)組是對(duì)需要頻繁處理大量數(shù)據(jù)的應(yīng)用來(lái)說(shuō)的并且遍歷數(shù)組主要是查找(篩選)匹配一定標(biāo)準(zhǔn)的元素。數(shù)組中我們?cè)诓檎腋哂诨虻陀谔囟ㄅR界值,或者可能是匹配一些數(shù)據(jù)時(shí),jq就提供了一個(gè)函數(shù)$.grep()。
$.grep() 方法是按照某種條件來(lái)過濾數(shù)組。
$.grep(array,callback,invert) //調(diào)用的方式
array:待過濾數(shù)組;
callback:處理數(shù)組中的每個(gè)元素,并過濾元素,該函數(shù)中包含兩個(gè)參數(shù),第一個(gè)是當(dāng)前數(shù)組元素的值,一個(gè)是當(dāng)前數(shù)組元素的下標(biāo),即元素索引值。此函數(shù)應(yīng)返回一個(gè)布爾值。
invert:布爾型可選項(xiàng),默認(rèn)值false,值為true或false, 如果 “invert” 為 false 或?yàn)樵O(shè)置,則函數(shù)返回?cái)?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ù)過濾掉的元素。
再來(lái)個(gè)例子看看$.grep()
var nums = '1,2,3,4,5,jQuery,CSS,5'.split(',');
如果我們想找出其中的字符串,我們可以直接使用 $.grep() 方法來(lái)完成:
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() 方法也可將一個(gè)數(shù)組轉(zhuǎn)換為另一個(gè)數(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"]