どのように地獄私はマップを使用しますか?
9097 ワード
これは私の個人的なブログからの投稿ですHere
彼らは一日かそこらでそこで発表される.どのように空想.
私はよく学生たちにアレイ関数を使うよう励ます
地図は興味深いタイプの機能であり、誰かがあなたが知っているJavaScriptを剥がして、いくつかの古代の外国人技術を公開するのが大好きであるように、それは最初に非常に奇妙に見えます.
最初に矢印関数を指摘したいと思います
そこでやっている機能は何ですか?これはコールバックですか?まあ…のソート.しかし、コールバックとしてそれを考えるのは、関数が渡された引数と*引数であり、別の関数が実行を決定します.だからいくつかの方法では、コールバックのようです.しかし、それはコールバックではなく、代わりに、別の日のためのブログ記事である* * *高機能関数*と呼ばれます.
承知しました
さて、マップは配列の上で繰り返します.配列の各項目を1つずつ受け取り、指定した関数に渡します.
それで、あなたがこれを見るならば
さて、私たちは4つの結果を格納する必要があるので、それはあまりにも右の配列である必要があります.だから私たちは知っている
さて、それを説明する1つの方法は、単一の項目を引数として期待する関数を取ることができることです.この関数を多くの項目の配列で使用します.……ポケットのようだ
これは実際にはかなりドープされているので、ループを書く代わりに、単一の項目で動作するために使用される単純な関数を書くことができます.これは本当に素晴らしい
そして、私がそれがポケットのように言うとき
違いを見なさい?マップのバージョンは、1つの行にフィットし、はるかに少ないcruftを持っており、あなたはとてもクールに見えるようになります.OKたぶん最後の部分は真実ではない.あなたの周りの方法を知っている場合はループのために書く必要はめったにありません
彼らは一日かそこらでそこで発表される.どのように空想.
私はよく学生たちにアレイ関数を使うよう励ます
map
, reduce
, and filter
しかし、彼らはめったに彼らと快適な感じがします.そして、彼らがマウントされた懐中電灯でスイス軍ナイフのようであるので、それは本当に恥です.これらの3つの関数は、おそらくあなたの最も混乱したバギーコードの数千行を削除することができます.バンチのオールスターから始めましょうmap
.地図は興味深いタイプの機能であり、誰かがあなたが知っているJavaScriptを剥がして、いくつかの古代の外国人技術を公開するのが大好きであるように、それは最初に非常に奇妙に見えます.
array.map(x => x * 5) // What r u even Doing tho!!!!
ベースラインを達成するためにコードのこの行を壊しましょう.最初に矢印関数を指摘したいと思います
x => x * 5
(もし矢印関数が何を読んでいるのかをよく知らなければBlog Post! ここではうまく説明してくれます)そこでやっている機能は何ですか?これはコールバックですか?まあ…のソート.しかし、コールバックとしてそれを考えるのは、関数が渡された引数と*引数であり、別の関数が実行を決定します.だからいくつかの方法では、コールバックのようです.しかし、それはコールバックではなく、代わりに、別の日のためのブログ記事である* * *高機能関数*と呼ばれます.
承知しました
map
引数として関数を受け取ります.でもどうして?それはどうしますか.さて、マップは配列の上で繰り返します.配列の各項目を1つずつ受け取り、指定した関数に渡します.
それで、あなたがこれを見るならば
const scores = [90, 80, 25, 50]
const doubleScores = sores.map(x => x * 2)
その後、あなたはdoubleScores
各項目のスコアを取ることによって計算され、それを実行してx => x * 2
. それで、それは我々を残しますか?さて、私たちは4つの結果を格納する必要があるので、それはあまりにも右の配列である必要があります.だから私たちは知っている
doubleScores
が配列になります.そして、それはいくつかの他の配列内容を倍増する結果で満たされる配列です.// A way to visualize what map is doing
cosnt scores = [90, 80, 25, 50]
const double = x => x * 2
const doubleScores = [ double(scores[0]),
double(scores[1]),
double(scores[2]),
double(scores[3]) ]
ので、地図は何ですか?さて、それを説明する1つの方法は、単一の項目を引数として期待する関数を取ることができることです.この関数を多くの項目の配列で使用します.……ポケットのようだ
for loop
すべての配列がちょうどそれを持ち歩いていること.これは実際にはかなりドープされているので、ループを書く代わりに、単一の項目で動作するために使用される単純な関数を書くことができます.これは本当に素晴らしい
for loops
コードの実際の意図が何であるかをマスクすることができるcruftとboilerplateがあります.次のコードを考えます.const students = [ { name: 'Leroy Jenkins' grade: 55 },
{ name: 'Tommy Pickles' grade: 98 },
{ name: 'Mike Tyson' grade: 85 },
{ name: 'Donnie Darko' grade: 90 } ]
// A simple function expecting a single student, and returns true if they pass the class and fail otherwise.
const isPassing = (student) => student.grade >= 65 ? true : false
// Usage with a single student
const tommyPickles = students[1]
const didTommyPass = isPassing(tommyPickles)
// Usage with the entire list
const classResults = students.map(isPassing)
// Extra credit c-c-combo usage with filter
const onlyWinners = students.filter(isPassing) // more on this next week.
どのように滑らかですか?forループの真ん中でその関数を使おうとするのは想像できますか?それは混乱のように見えます、代わりに、それは美しい1行宣言のようです.地図は超大国を与える!そして、私がそれがポケットのように言うとき
for loop
文字通り任意の意味for loop
マップを使用して書き直されることができます、そして、それは通常非常により簡単になります.例えば、最初のforループのように見えるconst scores = [90, 80, 25, 50]
const doubleScores = []
for (var i = 0; i < scores.length; i++) {
doubleScores.push(scores[i] * 2)
}
EWW WTF . Noマップマップを戻すconst doubleScores = sores.map(x => x * 2)
ohhhhはい.より良い.違いを見なさい?マップのバージョンは、1つの行にフィットし、はるかに少ないcruftを持っており、あなたはとてもクールに見えるようになります.OKたぶん最後の部分は真実ではない.あなたの周りの方法を知っている場合はループのために書く必要はめったにありません
map
. 私は実際に長いループのために書かれていないので、私はあなたが上記のものを書くときMDNをダブルチェックしなければならなかった.私は正直に言っています.Reference
この問題について(どのように地獄私はマップを使用しますか?), 我々は、より多くの情報をここで見つけました https://dev.to/liltechnomancer/how-the-hell-do-i-use-map-l73テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol