講解一個很實用的JS小語法 filter
就是從數組中找到適合條件的元素(比如說大於某一個元素的值)
var arr=[1,23,5,78,34,55,13];
如何才能找到大於23的所有元素呢,
1,下面是傳統的解決思路,就是用$.each(),這種用法,先不說這種用法好不好,先看代碼:
var max23=[];
$.each(arr,function(index,value){if(value>23){ max23.push(value)}});
然后在console中輸入max23 輸出值如下:
結果一目了然,這種解決方法感覺比較慢如果有個幾萬個數據再這樣一條條查找效率肯定很低,有沒有其他的解決辦法了呢
2,下面看一種JS數組的Fliter 這個新屬性方法能不能帶來質的改變呢
下面是代碼:
arr.filter(function(element,pos){return element>23})
在console中運行可以直接看到:
哈,現在大家看大filter的厲害了吧,主要是filter中的callback 函數直接返回了所有符合條件的函數,下面給大家看個測試的小例子,大家看返回什么值,若果你猜對了,那么filter以后就會用了,
function whatDoesItDo(arr){
return arr.filter(function(elem, pos) {
return arr.indexOf(elem) == pos;
});
};
試試效果,js就是這么神奇
我是Rhino ,歡迎大家加我博客,交流