每日 30 秒 ⏱ 惟一的數據集

簡介

數組、對象、惟1、只出現一次、差集javascript

取出兩個對象數組中惟一的數據集,即差集。java

// 該源碼來自於 https://30secondsofcode.org
const filterNonUniqueBy = (arr, fn) =>
  arr.filter((v, i) => arr.every((x, j) => (i === j) === fn(v, x, i, j)));
複製代碼

代碼分析

代碼使用了 Array.prototype.filter 來進行遍歷數組並獲取過濾,經過 Array.prototype.everyfn 來對數據項進行判斷是否重複出現過。git

使用場景

從後端或者數據庫分別獲取到參加不一樣馬拉松的用戶並對這些用戶作歸集,經過 filterNonUniqueBy 來尋找只參加過一次馬拉松的用戶。github

// 查詢到參加 2019廈門馬拉松的數據
const join2019 = [
    { id: 1, name: 'xiaoer', join: ['2019廈門馬拉松', '2018廈門馬拉松'] },
    { id: 2, name: 'xiaosi', join: ['2019廈門馬拉松'] },
]

// 查詢到參加 2018年馬拉松的數據
const join2018 = [
    { id: 1, name: 'xiaoer', join: ['2019廈門馬拉松', '2018廈門馬拉松'] },
    { id: 3, name: 'menty', join: ['2018廈門馬拉松'] },
]

// 合併數據
const users = [...join2019, ...join2018]

// 獲取只參加過一次的用戶
// 輸出:
// [
// {id: 2, name: "xiaosi", sales: 50000},
// {id: 3, name: "menty", sales: 150000}
// ]
const joinOnce = filterNonUniqueBy(users, (a, b) => a.id === b.id)
複製代碼

類似代碼

取出數組中惟一的數據集。數據庫

// 該源碼來自於 https://30secondsofcode.org
const filterNonUnique = arr => arr.filter(i => arr.indexOf(i) === arr.lastIndexOf(i))
複製代碼

一塊兒成長

在困惑的城市裏總少不了並肩同行的 夥伴 讓咱們一塊兒成長。後端

  • 若是您想讓更多人看到文章能夠點個 點贊
  • 若是您想激勵小二能夠到 Github 給個 小星星
  • 若是您想與小二更多交流添加微信 m353839115

微信公衆號

本文原稿來自 PushMeTop數組

相關文章
相關標籤/搜索