重溫javascript---方法(array)

前兩天去面試,很多都問到了js中處理數組的問題,當時本人腦子一熱就是各種循環,額,每次面試官都問我有沒有更好的方法,然後,然後就沒有然後了。
js中提供的方法其實很多,長時間不用就會被丟到南海曬太陽了,於是自己也快被丟到南海曬太陽去了……

Array

  • array.concat(item…)
    concat方法會產生一個新數組,包含一份array的淺複製(shallow copy)並把一個或多個參數item附加在其後。
    var a=[1,2,3];
    var b=[4,5,6];
    var c= a.concat(b,7,8);
    alert(c);//結果爲:1,2,3,4,5,6,7,8
  • array.join(separator)
    join方法是把一個array構造成一個字符串。它是用一個separator分隔符將array中的每個元素連接在一起,默認的連接符是”,”。我們也可以使用空字符串作爲連接符。
    var a=[1,2,3];
    var b=[4,5,6];
    var c= a.concat(b,7,8);
    var d=c.join("");
    alert(d);//結果爲  12345678
  • array.pop() 和array.push(item…)
    這裏牽扯到棧的概念,我們可以把棧比作是一口井,當我們向井裏放東西的時候,肯定是從上面運到下面直到堆到井口。當我們從井裏取東西的時候,肯定是從井口開始取,直到取到井底。這是一個“先進後出,後進先出”的方式。
    array.pop()和array.push(item…)這兩個方法就可以使數組像井一樣的工作,pop方法已出array中的最後一個元素並且返回該元素。如果array是empty,則返回undefinded。push方法是把一個或者多個參數item附加到一個數組的尾部,和concat不同的是,它會修改array,如果參數是一個數組,它會把這個數組作爲單個元素添加到數組中,並且修改這個array的新長度值。
    var a=[1,2,3];
    var b=[4,5,6];
    var c= a.concat(b,7,8);
     //pop()方法 和push()方法 
    var e= c.pop();
    alert(e);//結果是 8
    var f=['a','b','c'];
     var g= f.push(a,b);
    alert(f);//結果是a,b,c,1,2,3,4,5,6
    alert(g);
    //結果 5 在這裏注意 push方法返回的是新數組的長度值
  • array.reverse()
    reverse方法反轉array裏的元素順序,並且返回array本身。
var a=[1,2,3];
var b=a.reverse();
alert(a);//結果   3,2,1
alert(b);//結果    3,2,1
  • array.shift()
    shift方法移除數組的第一個元素並返回該元素。若這個數組是空的,則返回undefined。
var a=[1,2,3];
var b=a.shift();
alert(a);//結果  2,3
alert(b);//結果  1
  • array.slice(start,end)
    slice方法對array中的一段做淺複製,從array[start]開始,複製到array[end]結束。end參數是可選的,默認是該數組的長度。
    如果兩個參數中任一個是負數,則數組的長度會和它們相加。如果start大於等於數組的長度,結果會是一個新的空數組。
    var a=[1,2,3,4,5];
    var b= a.slice(1,3);
    var c= a.slice(1);
    var d= a.slice(-2,3);
    var e= a.slice(6,9);
    alert(b);//結果  2,3
    alert(c);//結果  2,3,4,5
    console.log(d);//結果 [] 
    console.log(e);//結果 []
  • array.sort(comparefn)
    sort方法對array中的內容進行排序。不過在給數字排序時需要使用比較函數。比較函數需要接受兩個參數,如果這兩個參數相等就返回0,如果第一個參數應該排列在前面則返回一個負值,相反,如果第二個參數應該排列在前面則返回一個正數。
var a=[20,35,21,5,15,39,90,0];
var b=a.sort();
alert(a);//結果  0,15,20,21,35,39,5,90
alert(b);//結果  0,15,20,21,35,39,5,90

上面的數字排序並沒有完全正確,試試下面的方法

var a=[20,35,21,5,15,39,90,0];
var b=a.sort(function(n,s){
    return n-s;
})
alert(b);//結果  0,5,15,20,21,35,39,90

上面的這個函數可以使數字正確排序了。更多的函數排序方法以後再說。

  • array.splice(start,deleteCount,item…)
    splice方法從數組中移除一個或者多個元素,並用新的item代替它們。第一個參數start是從數組要移除的元素的起始位置,第二個參數就是要移除元素的個數,剩下如果還有的參數就是替換的元素。它返回一個包括被移除的元素的數組。
var a=[0,1,2,3,4,5,6];
var b=a.splice(2,2,3,4,5);//a是 0,1,3,4,5,4,5,6
var c=a.splice(2,2);
alert(b);//結果  2,3
alert(c);//結果  3,4
alert(a);//結果  0,1,5,4,5,6

不要將splice方法和slice方法弄混,slice方法是獲取數組的指定位置的值,而splice方法是移除指定位置的值並且返回的是移除的數值。

  • array.unshift(item….)
    unshift方法像push方法用來把元素添加到數組中,但是它將item的元素插入到數組的頭部而不是尾部,它的返回值是數組的新長度。
var a=[1,2,3,4];
var b=a.unshift(5,6,7);
alert(a);//結果  5,6,7,1,2,3,4
alert(b);//結果   7

上面的方法就是array常用的方法,其他的一些方法會很快總結。

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