簡介
數組、統計、遍歷
根據指定的方法或者參數對數組中的項目進行統計。
// 該源碼來自于 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 來對數據進行歸集,并返回統計好的數據。
使用場景統計學生成績的分布可以傳入score屬性,函數則會返回由成績組成的統計對象。統計用戶花費區間可以傳入一個區間判斷函數來獲得對應的統計對象。
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") })相似代碼
判斷一個數組中某個數據項出現的次數。
// 該源碼來自于 https://30secondsofcode.org const countOccurrences = (arr, val) => arr.reduce((a, v) => (v === val ? a + 1 : a), 0)一起成長
在困惑的城市里總少不了并肩同行的 伙伴 讓我們一起成長。
如果您想讓更多人看到文章可以點個 點贊。
如果您想激勵小二可以到 Github 給個 小星星。
如果您想與小二更多交流添加微信 m353839115。
本文原稿來自 PushMeTop
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/109010.html
showImg(https://segmentfault.com/img/remote/1460000018771004?w=900&h=500); 簡介 數組、CSV、表格、工具 將一個數組轉化為逗號為分割符的字符串(CSV)即表格數據。 // 該源碼來自于 https://30secondsofcode.org const arrayToCSV = (arr, delimiter = ,) =...
showImg(https://segmentfault.com/img/remote/1460000018734296?w=900&h=500); 簡介 可讀性、性能、Spread、Reduce 在 優雅三連擊 中有同學提到了 可讀性 這個關鍵詞,就小二個人的觀點 在某個范圍內使用比較常用到的小技巧,可以提升一定的可讀性,文中提到的短路運算在初始化變量是提升可讀性的,并且在很多提倡優化if 語句...
showImg(https://raw.githubusercontent.com/pushmetop/resource/master/30-seconds-for-everyday/chunk/poster.png); 簡介 數據分割、分頁、異步操作、DOM優化 把數組按指定大小進行分組,可以用于分頁、數據切割、異步操作數據。 // 該源碼來自于 https://30secondsofcode....
showImg(https://segmentfault.com/img/remote/1460000018709740?w=900&h=500); 簡介 數組、初始化、快速生成數組、內存泄露 有時候會需要對數組進行一些初始化,最常用到的便是 for 循環: let num = []; for (let i = 0; i < 10; i++) { // 做一些其他操作 // 或者返...
showImg(https://segmentfault.com/img/remote/1460000018771037?w=900&h=500); 簡介 benchmark、基準測試、jsPerf 在 優雅插入數組 一文中大家最多的評論就是 能不能加個基準測試。小二不是不喜歡加基準測試而是現在硬件設備的性能越來越快了,有時候一些操作不是性能問題的主要原因,當然這不是我們不寫出好代碼的理由。 書寫...
閱讀 2567·2021-09-30 10:00
閱讀 3500·2021-09-22 10:54
閱讀 6257·2021-09-07 10:28
閱讀 2955·2019-08-29 13:53
閱讀 752·2019-08-29 12:42
閱讀 967·2019-08-26 13:51
閱讀 1264·2019-08-26 13:32
閱讀 3028·2019-08-26 10:39