JavaScriptのreduce()メソッドで配列の値を左から右へ処理し、1つの値にまとめる方法
JavaScriptでは、reduce()メソッドを使用することで、配列の2つの値に対して左から右へ順番に関数を適用し、最終的に結果を1つの値にまとめる(畳み込む)ことができます。配列の合計値の計算など、複数の要素を集約したい場面で非常に便利なメソッドです。
reduce()メソッドの主な引数
- callback − 配列内の各値に対して実行される関数です。
- initialValue − callbackの最初の呼び出し時に第1引数として渡される初期値(オブジェクト)です。省略した場合は、配列の最初の要素が初期値として使用されます。
サンプルコード
以下のコードを実行すると、JavaScriptのreduce()メソッドの基本的な動作を確認できます。この例では、古いブラウザ向けのポリフィル実装も含めており、配列[0, 1, 2, 3]の全要素を足し合わせた合計値を出力します。
<html>
<head>
<title>JavaScript Array reduce Method</title>
</head>
<body>
<script>
if (!Array.prototype.reduce) {
Array.prototype.reduce = function(fun /*, initial*/) {
var len = this.length;
if (typeof fun != "function")
throw new TypeError();
// no value to return if no initial value and an empty array
if (len == 0 && arguments.length == 1)
throw new TypeError();
var i = 0;
if (arguments.length >= 2) {
var rv = arguments[1];
} else {
do {
if (i in this) {
rv = this[i++];
break;
}
// if array contains no values, no initial value to return
if (++i >= len)
throw new TypeError();
}
while (true);
}
for (; i < len; i++) {
if (i in this)
rv = fun.call(null, rv, this[i], i, this);
}
return rv;
};
}
var total = [0, 1, 2, 3].reduce(function(a, b){ return a + b; });
document.write("total is : " + total );
</script>
</body>
</html>
実行結果
このコードを実行すると、画面には以下のように表示されます。
total is : 6
このように、reduce()メソッドはコールバック関数を通じて配列の要素を左から右へ順に処理し、単一の値へと集約することができます。現代のブラウザではreduce()は標準でサポートされているため、通常はポリフィルなしでそのまま利用可能です。
-
【C#】メソッドから複数の値を返す4つの方法(ref・out・配列・タプル)
C#では、1つのメソッドから複数の値を返したい場面がよくあります。C#には主に以下の4つのアプローチがあります。ref(参照)パラメータを使うout(出力)パラメータを使う配列を返すタプル(Tuple)を返すそれぞれの方法について、コード例と実行結果とともに詳しく解説します。1. ref(参照)パラメータを使う方法ref キーワードを使うと引数を参照渡しでき、メソッド内で変更した値が呼び出し元にも反映されます。通常の戻り値と組み合わせることで、実質的に2つの値を受け取ることが可能です。なお、ref 引数に渡す変数は、呼び出し前に初期化しておく必要があります。コード例class Program{
-
C#の2次元配列から要素にアクセスする方法を徹底解説
2次元配列は、x個の行とy個の列を持つ「表(テーブル)」としてイメージすると理解しやすくなります。2次元配列の要素へアクセスするには、添字(インデックス)を使用します。具体的には、配列の行インデックスと列インデックスを指定します。int x = a[1,1]; Console.WriteLine(x);C#では、カンマで区切って a[行, 列] の形式で記述することにより、任意の位置にある要素を取得できます。上記の例では、1行1列の位置にある要素を変数 x に代入し、コンソールに出力しています。サンプルコード以下の例では、5行2列の2次元配列を作成し、入れ子になったforループですべての要素を