ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript 配列のreduce()メソッド

JavaScript 配列のreduce()メソッド

王林
王林オリジナル
2024-08-28 06:05:02943ブラウズ

JavaScript Array reduce() Method

こんにちは!このブログでは、JavaScript での「reduce メソッド」とその使用方法について学びます。それでは、始めましょう。

Reduce は JavaScript の配列メソッドの 1 つです。配列を入力として受け取り、単一の値を返します。 Reduce メソッドは、配列のすべての要素を処理し、提供されたコールバック関数に基づいて共通の値を更新する場合に便利です。

さらに詳しく見てみましょう:
Reduce は 2 つの引数を取ります:

  1. コールバック関数
  2. 開始点 (初期値)、これを「結果」と呼びます (*オプション)

配列の最初の要素から開始し、それをコールバック関数に渡し、結果を「result」に格納します。最後の要素を処理した後、最終的な「結果」を返します。

*オプション:

配列が空で初期値が指定されていない場合、初期アキュムレータとして機能する要素がないため、reduce は TypeError をスローします。

配列に要素が 1 つだけあり、初期値が指定されていない場合、reduce はコールバックを呼び出さずにその 1 つの要素を返します。

例:
この例は、reduce メソッドをどこでどのように使用するかを理解するのに役立ちます。コメントでお気軽に質問してください。

簡単:
Q.配列を指定して、その要素を合計します。

reduce メソッドを使用した解決策。

const arr = [1, 2, 3, 4];

// 0 + 1 + 2 + 3 + 4
const initialValue = 0;
const sumofArray = arr.reduce(
  (result, element) => result + element,
  initialValue,
);

console.log(sumofArray);
// Expected output: 10

説明:
2 番目の引数としてゼロを指定したため、最初は結果はゼロになります。次に、要素ごとにその要素が結果に追加され、最後に最終的な結果値が返されます。

中:

この例は、https://leetcode.com/problems/ flatten-deeply-nested-array/description/

から引用しています。

Q.多次元配列 arr と深さ n を指定すると、その配列の平坦化されたバージョンを返します。

多次元配列は、整数またはその他の多次元配列を含む再帰的なデータ構造です。

フラット化された配列は、その配列の一部またはすべてのサブ配列が削除され、そのサブ配列内の実際の要素に置き換えられたバージョンです。この平坦化操作は、現在のネストの深さが n 未満の場合にのみ実行する必要があります。最初の配列の要素の深さは 0 とみなされます。

Reduce メソッドを使用した解決策:

function flattenArray(arr, depth) {
    if(depth===0) return arr;
    return arr.reduce((result,element) => {
       if(Array.isArray(element)&&depth>0) {
          result.push(...flattenArray(element, depth-1));
       } else {
          result.push(element); 
       }
       return result;
   }, []);
}

説明:
深さがゼロの場合は、何もする必要はありません。それ以外の場合は、再帰とスプレッド演算子を使用して要素を結果に追加します。

それだけです! Reduce メソッドについてよく理解していただけたと思います。

参考文献:
MDN

の Array.prototype.reduce()

以上がJavaScript 配列のreduce()メソッドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。