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