數組、對象、惟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.every
和 fn
來對數據項進行判斷是否重複出現過。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))
複製代碼
在困惑的城市裏總少不了並肩同行的
夥伴
讓咱們一塊兒成長。後端
點贊
。小星星
。m353839115
。本文原稿來自 PushMeTop數組