簡介
數組、差集、函數
根據給出的函數找出兩個數組中的差集。
const differenceBy = (a, b, fn) => { const s = new Set(b.map(fn)); return a.filter(el => !s.has(fn(el))); };代碼分析
這段代碼使用了ES2015中定義的 Set 對象。Set 對象的值的特點是不含有重復的值,這個特性可以用來實現對一個數組的去重。
有的同學會問了那為啥要在這把 b 轉化為 Set 對象 呢,直接用 Array.prototype.indexOf 不是也可以實現查找數組中的值。實際上 Set.prototype.has 方法的效率會比 Array.prototype.indexOf 高一點。
Set 對象 還有很多有用的方法可以到 MDN web docs 查看。
使用場景找出兩個公司職員中工作不同的職員,這里只是簡單模擬一個小場景真實開發中往往會經過更多的判斷和歸集。
const superHeroCompany = [ { name: "xiaoer", job: "程序員" }, { name: "xiaosi", job: "圖書管理員", }, { name: "menty", job: "會計" }, ] const happyCompany = [ { name: "xiaofu", job: "程序員" }, { name: "panghu", job: "會計" }, ] const diffUsers = differenceBy(superHeroCompany, happyCompany, v => v.job)相似代碼
找出兩個數組當中的差集,要注意的是對象的值一樣并不是兩個對象就相等了,而是對象的指向一樣時才會相等。
// 該源碼來自于 https://30secondsofcode.org const difference = (a, b) => { const s = new Set(b); return a.filter(x => !s.has(x)); };
根據比較函數 comp 的返回值來過濾兩個數組中的差集。
// 該源碼來自于 https://30secondsofcode.org const differenceWith = (arr, val, comp) => arr.filter(a => val.findIndex(b => comp(a, b)) === -1)一起成長
在困惑的城市里總少不了并肩同行的 伙伴 讓我們一起成長。
如果您想讓更多人看到文章可以點個 點贊。
如果您想激勵小二可以到 Github 給個 小星星。
如果您想與小二更多交流添加微信 m353839115。
本文原稿來自 PushMeTop
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/109033.html
showImg(https://segmentfault.com/img/remote/1460000018795147?w=901&h=501); 簡介 數組、對象、唯一、只出現一次、差集 取出兩個對象數組中唯一的數據集,即差集。 // 該源碼來自于 https://30secondsofcode.org const filterNonUniqueBy = (arr, fn) => arr....
簡介 數組、拆分 根據條件將數組分成兩個集合。 // 該源碼來自于 https://30secondsofcode.org const bifurcateBy = (arr, fn) => arr.reduce((acc, val, i) => (acc[fn(val, i) ? 0 : 1].push(val), acc), [[], []]) 代碼分析 這個代碼主要是利用了 Array.p...
簡介 數組、對象、CSV、表格、工具 我們在 每日 30 秒之 arrayToCSV 中一起學習了將數組數據轉化為 csv 表格數據并導出,那如果是對象數組怎么辦呢?小腦袋瓜轉得快的同學肯定會說:使用 Array.prototype.map 把需要導出的字段先遍歷取出,再使用 arrayToCSV 將其導出為 CSV 數據表格。 可是你有沒有想過如果一個對象數組數據非常之大時,使用 Array.p...
showImg(https://segmentfault.com/img/remote/1460000018770987?w=900&h=500); 簡介 數組、every、any 判斷一個數組中是否都滿足特定的條件,如果滿足則返回 true 否則返回 false。 // 該源碼來自于 https://30secondsofcode.org const all = (arr, fn = Boole...
showImg(https://segmentfault.com/img/remote/1460000018771004?w=900&h=500); 簡介 數組、CSV、表格、工具 將一個數組轉化為逗號為分割符的字符串(CSV)即表格數據。 // 該源碼來自于 https://30secondsofcode.org const arrayToCSV = (arr, delimiter = ,) =...
閱讀 2308·2021-11-24 09:39
閱讀 3039·2021-10-15 09:39
閱讀 3088·2021-07-26 23:38
閱讀 2288·2019-08-30 11:14
閱讀 3409·2019-08-29 16:39
閱讀 1713·2019-08-29 15:23
閱讀 778·2019-08-29 13:01
閱讀 2663·2019-08-29 12:29