長い時間のための過去には、私が理解するのは難しいされている)(減らすこのメソッドの特定の使用を、通常はめったにそれを使用していません。今日、我々は単にJSを減らす()の使用について話をする必要がありますので実際には、あなたが本当にそれを理解することができれば、その後、実際には、多くの場所で、私たちは、適用することができます。
まず、文法
arr.reduce(関数(PREV、CUR、インデックス、ARR){
...
}、INIT)。
ここで、
ARRが元の配列を表し、
PREVは、最後のコールのコールバック、または初期値INITの戻り値を表し;
CURが現在処理中の配列要素を示す、
インデックスが初期化値を提供した場合、現在処理中の配列要素のインデックスを表し、指数0は、そうでなければ、インデックス1、。
initは初期値を表しています。
非常に複雑で感じていないように見えますか?:それはそれだけで、実際には、2つのだけ一般的に使用されるパラメータに見えますが、問題ではないPREVおよびCURを。次に、我々はそれに従うために具体的な使用例を見て〜
第二に、例
元の配列を提供するには:
た ARR = [3,9,4,3,6,0,9]。
()削減使用して解決方法が含まれます、次の要件を達成するための多くの方法が、ありますが、それを実装するために比較的簡単に考えることができます。
1.需要項目の配列
VaRの和= arr.reduce(関数(PREV、CUR){ 戻り PREV + CUR; }、 0);
初期値0が経過しているので、値は、先頭に3トーンの前の前の値を加えた後、次のサイクルの戻り値として、0、最初アレイ3のCURの値であり、その後、次の配列を続行しますエントリを追加する、というように、アレイ戻るすべてのエントリが完了するまで。
2.最大の配列項目を求めて
VARマックス=はarr.reduce(関数(PREV、CUR){ リターンMath.max(PREV、CUR); });
初期値が渡されないので、第一の配列の前の値が3の開始ので、二番目の配列9のCUR値は、2トーンの最大値は、次のサイクルに続けて行われます。
3.重複排除アレイ
VAR newArr = arr.reduce(関数(PREV、CUR){ prev.indexOf(CUR) === -1 && prev.push(CUR); 戻りPREV; }、[])。
以下を達成するための基本的な原理:
空の配列の初期化①
の再処理が必要となる項目1つのアレイ②での配列の初期化見つからない場合には(確かに空の配列を見つけることができない)、発見、アイテムが追加され、アレイの初期化に
③が必要とします第二項の配列の重複排除処理がアレイ初期化されていない場合、それが追加していき、ルックアップ配列の初期化に
④......
N-アイテムが⑤に再配列処理が必要になり、アレイの初期化ない場合は外観は、それがに追加していきます配列の初期化に
なります。この⑥ 配列初期化返さを
第三に、他の方法
1. reduceRight()
この方法の使用及び(減らす)実質的に同じであるが、トラバース逆の順序は、それが最初の項目に順方向トラバース、アレイの最後の項目です。
2. forEachの()、マップ()、すべての()、いくつかの()和フィルタ()
詳細については、→突くしてください簡単にはforEach()、マップ()、すべての()、いくつかの() およびフィルタ()の使用を
キー概要:
配列である)(削減方法をマージは forEachの()、マップ()、及びフィルタ() のような反復法項目は同時に電流によって発生するアレイの前面を横断することができる)(配列する各トラバースとして、その結果は減少させますトラバース操作項目、これは、別の反復法が一致することはできませんです
著者:の王ルイフロントエンド
リンクします。https://www.jianshu.com/p/541b84c9df90
出典:ジェーン・ブック