天天看點

Javascript對數組的操作

【來源:JsJava官方中文部落格】 

  Javascript自身提供了一些操作,可以對數組實作一定的處理,例如排序、連接配接、堆棧等等,下面做一下簡單的介紹。

 1,concat(arrayName2, arrayName3, …, arrayNameN) ,将數組本身和另外一個或多個數組進行連接配接,例如:

    var arr1=[”a”,”c”];

    var arr2=[”b”,”d”];

    var arr22=[”e”,”f”];

    var arr3=arr1.concat(arr2,arr22);

   document.write(arr3);//結果顯示為:a,c,b,d,e,f

  2,join(separator),通過間隔符将數字連接配接為字元串,例如:

    var arr1=[”a”,”b”,”c”,”d”,”e”];

    var arr1Str=arr1.join(”-”);

    document.write(arr1Str);//結果顯示為:a-b-c-d-e

 3,pop()/push(element1, …, elementN) ,實作了堆棧的操作,push是入棧,pop是出棧,例如:

    var arr1=[”a”,”b”];

    arr1.push(”c”,”d”);

    document.write(arr1);//結果為:a,b,c,d

    var value=arr1.pop();

    document.write(value);//結果為:d

  4,reverse() ,将數組反向排序,例如:

   var arr1=[”a”,”b”,”c”];

    arr1.reverse();

    document.write(arr1);//結果為:c,b,a

  5,sort(compareFunction),按照指定的排序規則進行排序,如果參數為空,則按照預設的字母和數字進行排序,例如:

    function mySort(o1,o2){

        if(o1.length>o2){

            return 1;

        }

        return -1;

    }

    var arr1=[”a”,”c”,”bd”];

    arr1.sort();

    document.write(arr1);//結果為:a,bd,c

    arr1.sort(mySort);

    document.write(arr1);//結果為:bd,c,a

  6,shift() /unshift,将數組的第一個值取出(或者将值插入到數組第一個位置),并且數組長度縮短(加長),例如:

    var arr1=[”a”,”b”,”c”];

    var value=arr1.shift();

    document.write(value);//輸出為:a

    document.write(arr1);//輸出為:b,c

    var value2=arr1.unshift(”g”);

    document.write(value);//IE輸出為undefined,Firefox輸出為3

    document.write(arr1);//輸出為:g,b,c

  7,slice(begin[,end]) ,類似字元串的substring方法,就是截取數組,例如:

    var arr1=[”a”,”b”,”c”];

    var arr2=arr1.slice(0,2);

    document.write(arr2);//輸出為:a,b

  8,splice(index, howMany, [element1][, …, elementN]) ,從指定的位置(index)開始,删除後面多個(howMany)數組的值,并從删除處開始依次插入新的值,例如:

    var arr1=[”a”,”b”,”c”];

    arr1.splice(1,1,”m”,”n”,”o”);

    document.write(arr1);//輸出為:a,m,n,o,c

  應該說,Javascript本身對數組提供的操作能力,還是不錯的,但是在實際應用中,我們需要對數組做更多的操作,例如Java、PHP、.NET中 對數組都提供了強大的操作能力,而且許多優秀的開源項目中,也提供了對數組的許多操作,但是Javascript這方面還需要進一步加強。

  為了對數組提供更多的操作,JsJava定義了許多類,來加強對數組的操作,介紹如下:

  1,jsjava.util.Arrays類,仿照Java的Arrays類,對數組提供了一些高效的操作,例如:

  var list=Arrays.asList([”a”,”b”,”c”]);//通過數組建立一個不可變的清單

  而且通過binarySearch,提供了二分法搜尋的一個實作,其它的請參考JsJavaDoc

  2,jsorg.apache.commons.lang.ArrayUtils類,該類的實作是參考Apache優秀的commons-lang開源項目實作的,實作其中的所有功能,例如對數組進行插入、删除、搜尋、填充、截取等等,例如:

    var arr=ArrayUtils.clone([0,1,2,9,0]);

    document.write(arr+”<br>”);

    document.write(ArrayUtils.subarray(arr,0,3)+”<br>”);

    arr.reverse();

    document.write(arr);

    顯示結果為:

    0,1,2,9,0

    0,1,2

    0,9,2,1,0

  3,jsorg.eob.lang.MultiDimensionArrayUtils類,該類實作了對多元數組的建立支援,例如可以友善建立二維和三維數組,具體可以參考文章《在Javascript之中如何建立多元數組》

  4,org.apache.commons.math.linear.RealMatrixImpl類,實作對矩陣的操作,矩陣實際上就是多元數組,即實 現了對多元數組的支援,例如可以實作多元數組的加、減、乘、除等操作,還有數學運算中對矩陣的其它操作,具體可以參考JsJavaDoc。

  JsJava是對Javascript語言最好的擴充和延伸,它與目前流行的prototype.js的方向是不一樣的,如果你正在建構web應用,那麼JsJava将是你界面應用最好的支撐。