javascript 數組幾個有用的方法-過濾,遍歷

1.過濾方法
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或false
a=[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,並且當且僅當所有的元素來判定時返回false
a=[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]



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章