a=[5,4,3,2,1];
everyother=a.filter(function(i){return i%2==0});
console.log(everyother,a) //[4, 2] [5, 4, 3, 2, 1]
everyother=a.filter(function(x,i){return i%2==0});
console.log(everyother,a) //[5, 3, 1] [5, 4, 3, 2, 1]
.filter( function(index) )
這種使用方法是對匹配的元素進行遍歷,如果function(index)返回的值爲true的話,那麼這個元素就被選中,如果返回值爲false的話,那麼這個元素就不被選中index參數是當前的匹配元素在原來的元素集合中的索引。
如果您對上面的解釋不清楚的話(本人表達能力有點欠缺~^_^),可以好好看看下面的例子:
<div id="first"></div>
<div id="second"></div>
<div id="third"></div>
<div id="fourth"></div>
<div id="fifth"></div>
<div id="sixth"></div>
jquery代碼:$("div").filter(function(index) {
return index == 1 || $(this).attr("id") == "fourth";
}).css("border", "5px double blue");
上面代碼的結果是 第二個div元素和 id爲“fourth”的div元素的邊框變成了雙線顏色爲藍色filter()會跳過稀疏數組中缺少的元素,他的返回值總是稠密的
b=[5,4,3,2,1,null,undefined,,];
dense=b.filter(function(){return true;}) //壓縮稀疏數組的空缺
d=b.filter(function(x){return x!==undefined && x!=null;}); //壓縮空缺並刪除underfined和null元素
console.log(dense,b,d) //[5, 4, 3, 2, 1, null, undefined] [5, 4, 3, 2, 1, null, undefined, undefined] [5, 4, 3, 2, 1]
2.every()和some() 數組的邏輯判定,返回true或falsea=[1,2,3,4,5];
a.every(function(x){return x<10;}) //true;所有的值都小於10
a.every(function(x){return x%2===0;}) //false;不是所有的值都是偶數
some()就像數學中的“存在”量詞,當數組中至少有一個元素調用判斷函數返回true,並且當且僅當所有的元素來判定時返回falsea=[1,2,3,4,5];
a.some(function(x){return x%2===0;}) //true:a 含有偶數值
a.some(isNaN) //false:a不包含非數值
3.reduce()
reduce()需要兩個參數,第一個是執行化簡操作的函數,這裏是通過加法,乘法,或取最大值的方法組合兩個值,第二個參數是一個傳遞給函數的初始值
a=[1,2,3,4,5];
sum=a.reduce(function(x,y){return x+y},0); //15
product=a.reduce(function(x,y){return x*y},1); //120
max=a.reduce(function(x,y){return (x>y)?x:y; }); //5
4.indexOf()和lastIndexOf() 搜索整個數組中具有給定值的元素,返回第一個元素的索引或者沒有找到返回-1第一個參數是需要搜索的值,第二個參數是可選的值:他指定數組中的一個索引,從哪裏開始搜索
a=[0,1,2,1,0];
a.indexOf(1) //1:a[1]=1
a.lastIndexOf(1) //3:a[3]=1
a.indexOf(3) //-1:沒有值爲3的元素
a=[0,1,2,1,0,1,3];
pos=a.indexOf(1,2); //3:a[3]=1,從索引爲2的地方開始搜索
//在數組中查找所有出現的的x,並返回一個包含匹配索引的數組
function findall(a,x){
var results=[],
len=a.length,
pos=0;
while(pos<len){
pos=a.indexOf(x,pos);
if(pos===-1) break;
results.push(pos);
pos++;
}
return results;
}
findall(a,1)
4.map()將調用的數組的每個元素傳遞給指定的函數,並返回一個新數組,它包含函數的返回值a=[1,2,3]
b=a.map(function(x){return x*x;}); //b是[1,4,9]
5.forEach()方法,從頭至尾遍歷數組,爲每一個元素調用指定的函數,它可以接收三個參數:數組元素、元素的索引、和數組本身,如果只關心數組元素的值,可以只寫一個參數,其它參數可以忽略!var data=[1,2,3,4,5];
var sum=0;
data.forEach(function(value){sum+=value;}); //只有一個參數,數組元素,累加
data.forEach(function(v,i,a){a[i]=v+1;}); data=[2,3,4,5,6]