成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專(zhuān)欄INFORMATION COLUMN

每日 30 秒 ? 兩個(gè)數(shù)組中的差集

JerryC / 2989人閱讀

簡(jiǎn)介
數(shù)組、差集、函數(shù)

根據(jù)給出的函數(shù)找出兩個(gè)數(shù)組中的差集。

const differenceBy = (a, b, fn) => {
  const s = new Set(b.map(fn));
  return a.filter(el => !s.has(fn(el)));
};
代碼分析

這段代碼使用了ES2015中定義的 Set 對(duì)象。Set 對(duì)象的值的特點(diǎn)是不含有重復(fù)的值,這個(gè)特性可以用來(lái)實(shí)現(xiàn)對(duì)一個(gè)數(shù)組的去重。

有的同學(xué)會(huì)問(wèn)了那為啥要在這把 b 轉(zhuǎn)化為 Set 對(duì)象 呢,直接用 Array.prototype.indexOf 不是也可以實(shí)現(xiàn)查找數(shù)組中的值。實(shí)際上 Set.prototype.has 方法的效率會(huì)比 Array.prototype.indexOf 高一點(diǎn)。

Set 對(duì)象 還有很多有用的方法可以到 MDN web docs 查看。

使用場(chǎng)景

找出兩個(gè)公司職員中工作不同的職員,這里只是簡(jiǎn)單模擬一個(gè)小場(chǎng)景真實(shí)開(kāi)發(fā)中往往會(huì)經(jīng)過(guò)更多的判斷和歸集。

const superHeroCompany = [
    { name: "xiaoer", job: "程序員" },
    { name: "xiaosi", job: "圖書(shū)管理員", },
    { name: "menty", job: "會(huì)計(jì)" },
]

const happyCompany = [
    { name: "xiaofu", job: "程序員" },
    { name: "panghu", job: "會(huì)計(jì)" },
]

const diffUsers = differenceBy(superHeroCompany, happyCompany, v => v.job)
相似代碼

找出兩個(gè)數(shù)組當(dāng)中的差集,要注意的是對(duì)象的值一樣并不是兩個(gè)對(duì)象就相等了,而是對(duì)象的指向一樣時(shí)才會(huì)相等。

// 該源碼來(lái)自于 https://30secondsofcode.org
const difference = (a, b) => {
  const s = new Set(b);
  return a.filter(x => !s.has(x));
};

根據(jù)比較函數(shù) comp 的返回值來(lái)過(guò)濾兩個(gè)數(shù)組中的差集。

// 該源碼來(lái)自于 https://30secondsofcode.org
const differenceWith = (arr, val, comp) => arr.filter(a => val.findIndex(b => comp(a, b)) === -1)
一起成長(zhǎng)
在困惑的城市里總少不了并肩同行的 伙伴 讓我們一起成長(zhǎng)。

如果您想讓更多人看到文章可以點(diǎn)個(gè) 點(diǎn)贊。

如果您想激勵(lì)小二可以到 Github 給個(gè) 小星星。

如果您想與小二更多交流添加微信 m353839115

本文原稿來(lái)自 PushMeTop

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/109033.html

相關(guān)文章

  • 每日 30 ? 唯一數(shù)據(jù)集

    showImg(https://segmentfault.com/img/remote/1460000018795147?w=901&h=501); 簡(jiǎn)介 數(shù)組、對(duì)象、唯一、只出現(xiàn)一次、差集 取出兩個(gè)對(duì)象數(shù)組中唯一的數(shù)據(jù)集,即差集。 // 該源碼來(lái)自于 https://30secondsofcode.org const filterNonUniqueBy = (arr, fn) => arr....

    gityuan 評(píng)論0 收藏0
  • 每日 30 ? 根據(jù)條件將數(shù)組分成兩個(gè)集合

    簡(jiǎn)介 數(shù)組、拆分 根據(jù)條件將數(shù)組分成兩個(gè)集合。 // 該源碼來(lái)自于 https://30secondsofcode.org const bifurcateBy = (arr, fn) => arr.reduce((acc, val, i) => (acc[fn(val, i) ? 0 : 1].push(val), acc), [[], []]) 代碼分析 這個(gè)代碼主要是利用了 Array.p...

    Dongjie_Liu 評(píng)論0 收藏0
  • 每日 30 ? JSON對(duì)象數(shù)組轉(zhuǎn)換 CSV 表格數(shù)據(jù)

    簡(jiǎn)介 數(shù)組、對(duì)象、CSV、表格、工具 我們?cè)?每日 30 秒之 arrayToCSV 中一起學(xué)習(xí)了將數(shù)組數(shù)據(jù)轉(zhuǎn)化為 csv 表格數(shù)據(jù)并導(dǎo)出,那如果是對(duì)象數(shù)組怎么辦呢?小腦袋瓜轉(zhuǎn)得快的同學(xué)肯定會(huì)說(shuō):使用 Array.prototype.map 把需要導(dǎo)出的字段先遍歷取出,再使用 arrayToCSV 將其導(dǎo)出為 CSV 數(shù)據(jù)表格。 可是你有沒(méi)有想過(guò)如果一個(gè)對(duì)象數(shù)組數(shù)據(jù)非常之大時(shí),使用 Array.p...

    Ajian 評(píng)論0 收藏0
  • 每日 30 ? 數(shù)組所有數(shù)據(jù)是否滿(mǎn)足某條件

    showImg(https://segmentfault.com/img/remote/1460000018770987?w=900&h=500); 簡(jiǎn)介 數(shù)組、every、any 判斷一個(gè)數(shù)組中是否都滿(mǎn)足特定的條件,如果滿(mǎn)足則返回 true 否則返回 false。 // 該源碼來(lái)自于 https://30secondsofcode.org const all = (arr, fn = Boole...

    FullStackDeveloper 評(píng)論0 收藏0
  • 每日 30 ? 數(shù)組轉(zhuǎn)CSV表格數(shù)據(jù)

    showImg(https://segmentfault.com/img/remote/1460000018771004?w=900&h=500); 簡(jiǎn)介 數(shù)組、CSV、表格、工具 將一個(gè)數(shù)組轉(zhuǎn)化為逗號(hào)為分割符的字符串(CSV)即表格數(shù)據(jù)。 // 該源碼來(lái)自于 https://30secondsofcode.org const arrayToCSV = (arr, delimiter = ,) =...

    nanchen2251 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<