array.reduceRight( callback )メソッドは、引数「callback」に指定した累積処理用のコールバック関数を使い、配列要素を右から左へ順に累積した結果を返すメソッド。
構文
array.reduceRight( callback )
引数
- callback
- 累積処理に使うコールバック関数を指定する。
戻り値
配列要素を右から左へ順に累積した結果。
コールバック関数の構文
function callback( previousValue, currentValue, currentIndex, array ) {
// 累積処理。
}
// 累積処理。
}
引数
- previousValue
- 一つ前の処理までの累積結果。
- currentValue
- 現在処理中の配列要素。
- currentIndex
- 現在処理中の配列要素のインデックス。
- array
- 要素を格納している配列オブジェクト。
サンプル
配列の内容を合計
<script type="text/javascript">
function sumElements( $previousValue, $currentValue ) {
return $previousValue + $currentValue;
}
var $sampleArray = new Array( 1, 2, 3, 4, 5 );
var $sum = $sampleArray.reduceRight( sumElements );
document.write( $sum );
</script>
function sumElements( $previousValue, $currentValue ) {
return $previousValue + $currentValue;
}
var $sampleArray = new Array( 1, 2, 3, 4, 5 );
var $sum = $sampleArray.reduceRight( sumElements );
document.write( $sum );
</script>
↓↓↓出力結果↓↓↓
二次元配列を一次元配列にする
<script type="text/javascript">
function sampleFunc( $previousValue, $currentValue ) {
return $previousValue.concat( $currentValue );
}
var $sampleArrayA = [
[ "要素1-1", "要素1-2", "要素1-3" ],
[ "要素2-1", "要素2-2", "要素2-3" ],
[ "要素3-1", "要素3-2", "要素3-3" ]
];
var $sampleArrayB = $sampleArrayA.reduceRight( sampleFunc );
for ( var $counterVar = 0; $counterVar < $sampleArrayB.length; $counterVar++ ) {
document.write( $sampleArrayB[$counterVar] );
document.write( '<br />' );
}
</script>
function sampleFunc( $previousValue, $currentValue ) {
return $previousValue.concat( $currentValue );
}
var $sampleArrayA = [
[ "要素1-1", "要素1-2", "要素1-3" ],
[ "要素2-1", "要素2-2", "要素2-3" ],
[ "要素3-1", "要素3-2", "要素3-3" ]
];
var $sampleArrayB = $sampleArrayA.reduceRight( sampleFunc );
for ( var $counterVar = 0; $counterVar < $sampleArrayB.length; $counterVar++ ) {
document.write( $sampleArrayB[$counterVar] );
document.write( '<br />' );
}
</script>
↓↓↓出力結果↓↓↓