重複方法的參數包括一個回呼函式;及一個選擇性的物件,作為回呼函式中的 this 物件。如果沒有設定物件參數,則用與回呼函式連結的全域(global)物件。回呼函式需要三個參數:元素,指標,被處理中的陣列。回呼函式被用來處理陣列的每一個元素;但是陣列的指標處沒有設定元素值或已被刪除了,則會跳過不處理。重複方法不會變動原陣列。當重複方法開始執行時,陣列的元素值會被固定下來,作為處理的依據;開始執行後,元素值有變動或增刪,都會以原陣列值為依據。下面列出重複方法:
回呼函式用來測試陣列的元素,符合規則(回傳 true)的元素,會組成一個新陣列。其語法是:
var ar = array.filter( 回呼函式 [, 物件]);
IE 會失敗;Firefox, Safari, Chrome 有支援。
- 程式用法:
<script type='text/javascript'>
var ar=[ '吳宗憲', '男', '諧星', '台北市' ];
function length2(element, index, array)
{
return element.length>2;
}
document.write( ar.filter( length2 ) );
</script> - 執行結果:
吳宗憲,台北市
回呼函式被用來處理每一個元素。其語法是:
var ar = array.forEach( 回呼函式 [, 物件]);
IE 會失敗;Firefox, Safari, Chrome 有支援。
- 程式用法:
<script type='text/javascript'>
var ar=[ '吳宗憲', '男', '諧星', '台北市' ];
ar[9]=0;
function dump(element, index, array)
{
document.write( index +' : '+ element +'<br />' );
}
ar.forEach( dump ) ;
</script> - 執行結果:
0 : 吳宗憲
1 : 男
2 : 諧星
3 : 台北市
9 : 0
回呼函式被用來測試每一個元素。如果所有元素都符合測試規則,則回傳 true;只要有一個元素的測試結果是 false,則回傳 false。空陣列會回傳 true。其語法是:
var ar = array.every( 回呼函式 [, 物件]);
IE 會失敗;Firefox, Safari, Chrome 有支援。
- 程式用法:
<script type='text/javascript'>
var ar=['Jolin', 'Jay', 'Janet', 'Joe'];
function Jsss(element, index, array)
{
var re=/^j[a-zA-Z]+/i;
return re.test( element );
}
document.write( ar.every( Jsss ) );
</script> - 執行結果:
true
回呼函式被用來處理每一個元素,產生的值會組成一個新陣列。其語法是:
var ar = array.map( 回呼函式 [, 物件]);
IE 會失敗;Firefox, Safari, Chrome 有支援。
- 程式用法:
<script type='text/javascript'>
var ar=['Jolin', 'Jay', 'Janet', 'Joe'];
function upperAll(element)
{
return element.toUpperCase();
}
document.write( ar.map( upperAll ) );
</script> - 執行結果:
JOLIN,JAY,JANET,JOE
回呼函式被用來測試每一個元素,只要有一個元素符合測試規則,就回傳 true;否則回傳 false。其語法是:
var ar = array.some( 回呼函式 [, 物件]);
IE 會失敗;Firefox, Safari, Chrome 有支援。
- 程式用法:
<script type='text/javascript'>
var ar=['A', 'B', 'C', 'D'];
function cFind(element, index, array)
{
return element == 'C';
}
document.write( ar.some( cFind ) );
</script> - 執行結果:
true
使用回呼函式由左至右處理每一個元素,會處理元素與前一次產生的值,然後產生新的值。可選擇性設初值,否則以第一個元素為初值。其語法是:
var ar = array.reduce( 回呼函式 [, 初值]);
回呼函式可設四個參數:初值(或前一次回呼產生的值),元素,指標,被處理中的陣列。
IE, Safari, Chrome 會失敗;Firefox 有支援。
- 程式用法:
<script type='text/javascript'>
var ar=['A', 'B', 'C', 'D'];
var a2=ar.reduce(
function(a, b, index)
{ return a +' : '+ b +'='+index; }
);
document.write( typeof a2
+'<br />'+ a2);
</script> - 執行結果:
string
A : B=1 : C=2 : D=3
使用回呼函式由右至左處理每一個元素,會處理元素與前一次產生的值,然後產生新的值。可選擇性設初值,否則以最後一個元素為初值。其語法是:
var ar = array.reduceRight( 回呼函式 [, 初值]);
回呼函式可設四個參數:初值(或前一次回呼產生的值),元素,指標,被處理中的陣列。
IE, Safari, Chrome 會失敗;Firefox 有支援。
- 程式用法:
<script type='text/javascript'>
document.write( ar.reduceRight(
function(a, b, index)
{ return a +' : '+ b +'='+index; }
) );
</script> - 執行結果:
D : C=2 : B=1 : A=0