由于JavaScript1.5對Array增加了一些比較好用的方法,如forEach,filter,map,every,som,indexOf,但是在還不支援JavaScript1.5的浏覽器裡是不能用得,是以,mootools它通過擴充Array來使其實作對這些方法的支援:
---------------------------------Array.js---------------------------------
Array對象的forEach方法
原型:Array.prototype.forEach(callBack: Function, thisObject: Object)
作用:對數組進行疊代操作,它有兩個參數,第一個參數callBack是每次疊代所執行的函數,第二個參數thisObject可選,是要綁定到疊代執行的函數上的對象(也就是函數callBack中的this所指向的對象)

// 用法一

var arr = [ 1 , 2 , 3 , 4 , 5 , 6 ];
arr.forEach(function(e) ... {
alert(e);
} );


// 用法二

var arr = [ 1 , 2 , 3 , 4 , 5 , 6 ];

var obj = " hello! " ;
arr.forEach(function(e) ... {
alert(e+'--'+this);
} ,obj);


// 用法三
function putElt(element, index, array) ... {
document.write("pos [" + index + "] in array (" + array + ") is " + element + '<br>');
}

[ 2 , 5 , 9 ].forEach(putElt);
Array對象的filter方法
原型:Array.prototype.filter(callBack: Function, thisObject: Object)
作用:疊代數組,每個元素作為參數執行callBack方法,由callBack方法作為資料過濾網,最後傳回過濾後的一個數組
var result = [ 1 , 2 , 3 , 4 , 5 ].filter(function(e) ... {
return e > 3;
} );

alert(result); // 結果為4,5
Array對象的map方法:
原型:Array.prototype.map(callBack: Function, thisObject: Object)
作用:疊代數組,每個元素作為參數執行callBack方法,由callBack方法對每個元素進行處理,最後傳回處理後的一個數組
var result = [ 1 , 2 , 3 , 4 , 5 ].map(function(e) ... {
return e + 'px';
} );

alert(result); //結果為1px,2px,3px,4px,5px
Array對象的every方法:
原型:Array.prototype.every(callBack: Function, thisObject: Object)
作用:它的意思就是:是否數組中的每個元素都通過了callBack的處理?如果是,則傳回true,如果有一個不是,則立馬傳回false
var result = [ 1 , 2 , 3 , 4 , 5 ].every(function(e) ... {
return e > 3;
} );

alert(result); // 傳回false
Array對象的some方法:
原型:Array.prototype.some(callBack: Function, thisObject: Object)
作用:它的意思就是:是否數組中的有元素通過了callBack的處理?如果有,則立馬傳回true,如果一個都沒有,則傳回false
var result = [ 1 , 2 , 3 , 4 , 5 ].every(function(e) ... {
return e > 3;
} );

alert(result); // 傳回true
Array對象的indexOf方法:
原型:indexOf(searchElement: Object, fromIndex: Number)
作用:在數組中查找是否含有指定對象,如果有,傳回對象所在的索引,否則傳回-1;第二個參數是可選參數,如果指定的話,比如指定3,則表示從數組的第4個元素開始查找;預設從第0個元素開始查找。
var x1 = [1,2,3,4,5].indexOf(2); //結果為1
var x2 = [1,2,3,4,5].indexOf(2,3); //結果為-1
----------------------以下的方法是mootools提供的Array的專有擴充,和JavaScript标準無關--------------------------
each
作用:它的用法和作用與forEach一模一樣,參看上文的forEach
copy
作用:複制數組元素到新的數組中;預設是全部複制,如果指定了開始索引和長度的話,則可以按指定形式複制
var a = [1,2,3,4,5,6];
var b1 = a.copy(); //[1,2,3,4,5,6]
var b2 = a.copy(2,2); //[3,4]
remove
作用:删除數組中指定值的元素
var a = [1,2,2,3,4,5,6];
var b = a.remove(4); //[1,2,2,3,5,6] var c = a.remove(2); //[1,3,4,5,6]
test
作用:查找數組中是否有指定的值
var a = [1,2,3,4,5,6];
var b = a.test(11); //fasle var c = a.test(2); //true
extend
作用:把另一個數組追加到本數組後(不排除相同值的)
var a = [1,2,3,4];
var b = [1,11,12];
a.extend(b);
alert(a); //1,2,3,4,1,11,12
associate
作用:把另一個數組中的值作為key,本數組中的值做為值,組成一個鍵值對象(長度為兩者中較小的那個)
var v = [1,2,3,4,5];
var k = ['one','two','three'];
var kv = v.associate(k);
alert(kv['one']); //1 var v = [1,2];
var k = ['one','two','three'];
var kv = v.associate(k);
alert(kv['one']); //1 alert(kv['three']); //undefined
$A
作用:和Array的copy方法是一樣的作用
var a = [1,2,3,4];
var b = $A(a); //[1,2,3,4]
var c = $A(a,1,2); //[2,3]
$each
作用:功能基本和Array的forEach方法相同,官方文檔上說可用于非正常數組的疊代,如由getElemntsByTagName調用産生的結果,以及參數數組arguments等。不過管它正常不正常,用起來的形式還是一樣的
var a = [1,2,3,4];
$each(a,function(e){
alert(e);
});
恩,Array部分終于看好了,自己寫的語言表達上感覺有些地方有欠缺,呵呵。。。