毎日30秒⏱ 配列項目を統計する

1596 ワード

概要
配列、統計、巡回
配列中の項目は、指定された方法またはパラメータに基づいて統計します.
//        https://30secondsofcode.org
const countBy = (arr, fn) =>
  arr.map(typeof fn === 'function' ? fn : val => val[fn]).reduce((acc, val) => {
    acc[val] = (acc[val] || 0) + 1;
    return acc;
  }, {});
コード解析
関数はArray.prototype.mapによってデータを に実行し、typeofによって関数かどうかを判断し、そうでなければ(val) => val[fn]を使用して属性を読み取り、この関数はプログラミングに使用される頻度が高い.最後にreduceを使ってデータをまとめ、統計したデータを返します.
使用シーン
学生の成績の分布を統計すると、スコアの統計対象に戻ります.統計ユーザー費用区間は、対応する統計オブジェクトを得るために区間判定関数を導入することができる.
const students = [
    { name: 'xiaoer', score: 80 },
    { name: 'xiaosi', score: 90 },
    { name: 'menty', score: 50 },
]

const scoreStat = countBy(students, 'score')

const users = [
    { name: 'xiaoer', cost: 17000 },
    { name: 'xiaosi', cost: 8000 },
    { name: 'menty', cost: 3000 },
]

const costStat = countBy(users, i => {
    return i.cost > 10000
        ? 'high'
        : (i.cost > 5000 ? 'mid' : 'low')
})
類似コード
1つの配列の中のデータ項目の出現回数を判断します.
//        https://30secondsofcode.org
const countOccurrences = (arr, val) => arr.reduce((a, v) => (v === val ? a + 1 : a), 0)
共に成長する
困った都市では肩を並べて同行する人が必ずいます. は私達を一緒に成長させます.
  • より多くの人に文章を見てもらいたいなら、 を注文してもいいです.
  • を励まそうとすれば、二年生はギズブに を与えられます.
  • もし小二ともっと交流したいなら、WeChat m353839115を追加します.
  • この原稿はPush MeTopから来ています.