JSにおけるレデュースの使い方を簡単に話します.

1511 ワード

一、文法
arr.reduce(prev,cur,index,arr){},init);
ここで、arrは元の配列を表します.prevは前回のコールバック時の戻り値、または初期値initを表します.curは現在処理中の配列要素を表します.indexは、現在処理中の配列要素のインデックスを表し、init値を提供するとインデックスが0となり、そうでなければインデックスが1となります.initは初期値を表します.複雑な感じがしますか?大丈夫です.見た目だけです.実はよく使うパラメータは二つしかありません.prevとcurです.次に実例にしたがって具体的な使い方を見てみましょう.
二、実例
最初にオリジナルの配列を提供します.[3,9,4,3,6,0,9]
以下のニーズを実現するための方法はたくさんあります.中にはreduce()を使った解決方法も含まれています.
  • は、行列項目の和を求める
  • です.
    var sum=arr.reduce(prev,cur){
    return prev + cur;
    }0);菗29846;表題文字.
    初期値0が導入されているので、開始時のprevの値は0で、curの値は配列第一項3であり、加算後の戻り値は3である.次のシフトのprev値として、次の配列項目と加算し続ける.このようにして、すべての配列項目の和が完了するまで、戻ります.
  • は、行列項目の最大値
  • を求めます.
    =============
    var max=arr.reduce(prev,cur){
    return Math.max(prev,cur);

    初期値が導入されていないので、開始時のprevの値は配列第一項3、curの値は配列第二項9であり、2値の最大値を取ってから次のラウンドに進みます.
  • 配列デ重量
  • var newAr=arr.reduce(prev,cur){
    prev.indexOf(cur) === -1 && prev.push(cur);
    return prev;
    ),[];
    実現の基本的な原理は、①空の配列を初期化する②処理を必要とする配列の第1項を初期化配列で検索し、見つけられない場合(空の配列には絶対見つけられない)、この項目を初期化配列に追加する③処理を必要とする数セットの第2項を初期化配列で検索します.見つけられない場合は、この項目を初期化配列に追加し続けます.④…⑤処理したい配列のn番目の項目を初期化配列で検索します.見つけられない場合は、この項目を初期化配列に追加します.⑥この初期化配列を返します.
    三、その他の関連方法
  • reduceRight()
  • この方法の使い方はreduce()と同じで、遍歴の順序だけが逆であり、配列の最後の項目から前へ第一項を遍歴する.
  • forEach()、map()、every()、some()とfilter()
  • ポイントのまとめ:
    reduce()は配列の帰結方法であり、forEach()、map()、filter()などの反復方法と同じように配列毎の項目を遍歴しますが、reduce()は同時に前の配列項目を遍歴して生成された結果を現在のエルゴードと演算してもいいです.この点は他の反復方法が及ばないことです.