PS。(デンバー最近定住意思、そしてここに記事を書くために主に行ってきました、この2日間は、自分自身をピックアップしますここに送られ再配置、記事を書きました)
序文
別の後に、後に横断するために、様々な方法を学ぶために最初からループを反復処理するための方法は、実際には、最大の違いは、異なるシナリオのアプリケーションです。私たちは、それによって方法が状況下で適切であるということです覚えておく必要があります。
ジャガイモを選んで起動します
ジャガイモの束は、コードに置き換えた場合、次のように表すことができ、そこです。
var potatos = [{ id: '1001', weight: 50 },
{ id: '1002', weight: 80 },
{ id: '1003', weight: 120 },
{ id: '1004', weight: 40 },
{ id: '1005', weight: 110 },
{ id: '1006', weight: 60 }]
复制代码
上記の重量(g)は、アレイとして記録している間
var w = [50, 80, 120, 40, 110, 60]
复制代码
農民:私は熟成したい(バッチ操作)
私たちは、すべてについて熟成ポテトのこのバッチは、体重増加がで使用することができることを願っていますforEach
方法
potatos.forEach(potato => potato.weight += 20 )
复制代码
map
私ができる:回答への道!
potatos.map(potato => potato.weight += 20 )
复制代码
map
追加されました、私はあなたに、新しい更新を統計表の重みを外に置くことができます
w = potatos.map(potato =>
{ return potato.weight += 20 })
//[ 70, 100, 140, 60, 130, 80 ]
复制代码
マップやforEachの最大の違いは、戻り値をFOREACHない、ということです。あなたのリターンはforEachのを追加するのは無駄である場合でも、
w = potatos.forEach(potato =>
{ return potato.weight += 20 })
//undefined
复制代码
ボス:私はちょうど大きなポテト(フィルターフィルター)です
filter
フィルタリングは、名前から判断するものとする、あなたは生きているが、このようなスクリーニングフィルタである知っているfilter
乾燥します
var bigOnes = potatos.filter(potato => { return potato.weight > 100 })
//[ { id: '1003', weight: 120 }, { id: '1005', weight: 110 } ]
复制代码
これは、新しい配列オブジェクトを返し、元の配列は変更されません。
ベンダー:あなたは大したああ(その出会いを)持っていません
次の小さなトレーダーに我々これは小さなジャガイモであることを私たちに笑った、ビッグマックを見つけられないことがありパースニップは彼に一見を与えました
(旅行に)配列の予選タイムを決定する必要がない場合にのみ、我々は必要なsome
メソッドデビュー
var hasbig = potatos.some(potato => { return potato.weight > 100 })
//true
复制代码
私たちのsome
小さな男の子は、ジャガイモの貯蔵倉庫は、ちょうど、資格を見つける見つけるために戻った、と語ったtrue
余分な生活(優れた性能)を行わない、全体を横断していないことを
ベンダー:それは(完全準拠)すべて大きな権利です
小さなトレーダーは受け入れることを拒否し、私はそれがすべての大きなが送信されたあなたを信じていませんevery
チェックするために、小さな男の子を
var allbig = potatos.every(potato => { return potato.weight > 100 })
//false
复制代码
every
各要素に対して実行しcallback
、見つかったそうまで、callback
リターンfalse
を返す、要素(あまり大きくないジャガイモ)をfalse
反復が完了するまでも戻らなかった、false
戻った後、true
お客様:私は大きなジャガイモ(リターンとライン)です
顧客に、私は大きなじゃがいもがしたいfind
ボランティアを、私は彼に行ってきました
var big = potatos.find(potato => { return potato.weight > 100 })
//{ id: '1003', weight: 120 }
复制代码
find
そしてsome
、非常に似ている資格を探している、しかし、あなたが持つことができるsome
裏報告の収集に丸で行く「はい」( true
)、およびfind
差し出すジャガイモを入れて(復帰第一目標基準を満たすために)
レジ:このポテトは倉庫への最初の数である(数を返します)
レジ係がそれを記録する準備ができて販売しました
「ねえ、これはいくつかのジャガイモの倉庫の最初で、」find
と彼は言った:「ああ、私はジャガイモを保持ひいきにし、最初の数を見ていません」
「あなた軽率、私ができるように知っていたfindIndex
あなたと一緒に行きます。」
var i = potatos.findIndex(potato=>{ return potato.weight > 100 })
//2
复制代码
あなたが必要とされる要素のインデックスを知っておく必要がある場合は、使用することができますfindIndex
findIndex
最初の予選のインデックス番号を返します。
ボス:今年の収穫方法、それは(再帰的に蓄積)
テーブルプラスワンプラスジャガイモの重量に数学で終わりでいえば、今年収穫する方法がわからない、より良い人
reduce
彼は言った:それはどのような私ではないかもしれません
var sum = weight.reduce((sum, w) => { return w + sum },0)
//460
//并不会改变原表格
复制代码
,;すなわち、減少させる()メソッドは、最初の引数としてコールバック関数を受け取り、コールバック関数は、4つのパラメーターを受け入れ
1、previousValue =>初期関数コールバックまたは重畳の値の値;
2、currentValueは=>コールバック(サイクル)実行される値;
3、インデックス=>「currentValueは」インデックス値;
4、ARR =>配列自体;
減らす()メソッドは、最後の呼び出しのコールバックの戻り値を返します。
それはそうすることができ
var sum = potatos.reduce((sum, p) =>
{ return p.weight + sum },0)
//460
复制代码
reduce
実際には、それ以上の能力が、ここでは基本的な使い方を知ることができます
概要
ジャガイモ体において、我々は、例えば上述したように、いくつかのより高次の使用があり、これらの方法の基本的なシナリオを学習しreduce
、後でより詳細な研究やプレゼンテーション等を用いることができる平らなアレイは、アレイの重複排除、
私は〜この記事は、これらの方法を区別するのに役立ちます願っています
ます。https://juejin.im/post/5d08467fe51d451063431814で再現