mirror of
https://github.com/earthjasonlin/zzz-signal-search-export.git
synced 2025-08-05 19:50:08 +08:00
40 lines
970 B
JavaScript
40 lines
970 B
JavaScript
const mergeList = (a, b) => {
|
|
if (!a || !a.length) return b || []
|
|
if (!b || !b.length) return a
|
|
const list = [...b, ...a]
|
|
const result = []
|
|
const idSet = new Set()
|
|
list.forEach(item => {
|
|
if (!idSet.has(item.id)) {
|
|
result.push(item)
|
|
}
|
|
idSet.add(item.id)
|
|
})
|
|
return result.sort((m, n) => {
|
|
const num = BigInt(m.id) - BigInt(n.id)
|
|
if (num > 0) {
|
|
return 1
|
|
} else if (num < 0) {
|
|
return -1
|
|
}
|
|
return 0
|
|
})
|
|
}
|
|
|
|
const mergeData = (local, origin) => {
|
|
if (local && local.result) {
|
|
const localResult = local.result
|
|
const localUid = local.uid
|
|
const originUid = origin.uid
|
|
if (localUid !== originUid) return origin.result
|
|
const originResult = new Map()
|
|
for (let [key, value] of origin.result) {
|
|
const newVal = mergeList(localResult.get(key), value)
|
|
originResult.set(key, newVal)
|
|
}
|
|
return originResult
|
|
}
|
|
return origin.result
|
|
}
|
|
|
|
module.exports = { mergeData, mergeList } |