11日目(12-21-2020)


今日は頭が咲く日です.よく眠れなかったので、少し元気がありませんでした.昨日予習しなかったら、もう寝ていたかもしれません.予習してよかった.今日の公平チームのメンバーはよくやったので、少し速くやりました.進行が早く、復習の時間も多くなったので楽しかったです.
今日習った高次関数を少し説明します.
高次関数は、パラメータまたは戻り関数として関数を受け入れる関数です.
多くの人が関数だと言っていますか?見るとめまいがする.でも勉強しているうちに感じたのは、わざわざfor/whileなどの複文を書かなくてももっと簡単な結果が得られるということです.しかし、簡単であればあるほど理解しにくい.私と私のメンバーは理解を放棄して、ただこのようにしたいだけです.これは私の心を楽にさせた.いくら検索しても私たちのレベルに合った説明はありません...ううう
高次関数で最も困難なのは,高次関数部分を埋め込むことである.filter/map/reduce. フィルターと地図が一定の理解を得た.関数内の関数を宣言する場合、パラメータが1つしかないため、比較的容易で、適応も速い.しかし、パラメータを宣言しても、一つずつ要素を加えるのを自分で見ているのは理解できません.配列/オブジェクトのfor/for in文を初めて見たときの気持ちです.
うまくいった本当に吐きそうな疲れたreduceに出会えた最初、チームメートも私も慌てて、数十分探しました.私たちは理解を放棄し、直接受け入れることにした.
一番難しいのを見てみましょう.
const animals = [
  {
    score: 90,
    animal: 'bird',
  },
  {
    score: 75,
    animal: 'bird',
  },
  {
    score: 77,
    animal: 'snake',
  },
  {
    score: 100,
    animal: 'snake',
  },
  {
    score: 50,
    animal: 'bird',
  },
];
オブジェクトを要素とする配列があります.こちらです.
function sumScore(animals, value) {
}
動物にオブジェクトの配列を入れ、値にオブジェクトの動物属性値を入れ、その値に一致する動物のスコアを加算します.条件は、重複するx/空の配列が受信された場合、0を返すことです.
悩んだ結果、フィルタで値と同じ属性値を持つオブジェクトを抽出し、reduceで和を求めるという結論に達した.
しかし問題は、多くのfilterを使用したことがなくても、条件に合ったオブジェクトを探していても、配列の形で計算されているのか、オブジェクトを含む配列なのか分からないことです.まず実験をした.
function sumScore(animals, value) {
  return animals.filter(function (n) {
    return n.animal === value;
  });
}

console.log(sumScore(animals,'snake'));
console.log(sumScore(animals,'bird'));
ここまで完成して、確認してみました.

結果は成功した.ここでreduceでscoreを加算
function sumScore(animals, value) {
  let socre = animals.filter(function (n) {
    return n.animal === value;
  });
  return socre.reduce(function (acc, cur) {
    return acc + cur.score;
  },0);
}

console.log(sumScore(animals,'snake'));
console.log(sumScore(animals,'bird'));
console.log(sumScore(animals,'dog')); // 객체 속성값에 없는 값을 넣었을 때.
console.log(sumScore([],'bird'));// 빈 배열을 넣었을 때.
結果はね.

成功!!
勉強しているうちは少し疲れていましたが、面白かったです.3週目に入ると難易度が急上昇し、少し慌ただしくなりましたが、もう一つ解決していく味がしますね!ある日、私はこれらのものを柔軟に処理して、自分の手で私のものを作ることができることを望んでいます...