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