JavaScript數(shù)據(jù)分析之交集,并集,對稱差集

數(shù)據(jù)結構是待處理問題的數(shù)學模型,算法則是處理問題的策略。
作為軟件工程師除了要對現(xiàn)實問題有很好的理解與把控外,還要深諳數(shù)據(jù)結構與算法才能找到合適的數(shù)學模型和算法,從而服務于后續(xù)的工作。由此數(shù)據(jù)結構與算法的重要性可見一斑。
列表交集
代碼注釋:
/**
* @description 兩個列表的交集
* @param {Array} a 列表源數(shù)據(jù)
* @param {Array} b 列表源數(shù)據(jù)
* @return {Array} 目標數(shù)據(jù)
* @example
*
* const a = [
* { id: 1, name: '張三' },
* { id: 2, name: '李四' },
* { id: 3, name: '王五' },
* ]
* const b = [
* { id: 1, name: '張三' },
* { id: 4, name: '牛二' },
* { id: 5, name: '趙六' },
* ]
*
* intersection(a, b, 'id')
*
* [
* { id: 1, name: '張三' }
* ]
*/方法封裝:
export const intersection = (a, b, key = null) => {
return a.filter(i => (key ? b.map(i => i[key]).includes(i[key]) : b.includes(i)))
}列表并集
代碼注釋:
/**
* @description 兩個列表的并集
* @param {Array} a 列表源數(shù)據(jù)
* @param {Array} b 列表源數(shù)據(jù)
* @return {Array} 目標數(shù)據(jù)
* @example
*
* const a = [
* { id: 1, name: '張三' },
* { id: 2, name: '李四' },
* { id: 3, name: '王五' },
* ]
* const b = [
* { id: 1, name: '張三' },
* { id: 4, name: '牛二' },
* { id: 5, name: '趙六' },
* ]
*
* union(a, b, 'id')
*
* [
* { id: 1, name: '張三' },
* { id: 2, name: '李四' },
* { id: 3, name: '王五' },
* { id: 4, name: '牛二' },
* { id: 5, name: '趙六' },
* ]
*/方法封裝:
export const union = (a, b, key = null) => {
return [...a, ...b.filter(i => (key ? !a.map(i => i[key]).includes(i[key]) : !a.includes(i)))]
}列表對稱差集
代碼注釋:
/**
* @description 兩個列表的對稱差集
* @param {Array} a 列表源數(shù)據(jù)
* @param {Array} b 列表源數(shù)據(jù)
* @return {Array} 目標數(shù)據(jù)
* @example
*
* const a = [
* { id: 1, name: '張三' },
* { id: 2, name: '李四' },
* { id: 3, name: '王五' },
* ]
* const b = [
* { id: 1, name: '張三' },
* { id: 4, name: '牛二' },
* { id: 5, name: '趙六' },
* ]
*
* difference(a, b, 'id')
*
* [
* { id: 2, name: '李四' },
* { id: 3, name: '王五' },
* { id: 4, name: '牛二' },
* { id: 5, name: '趙六' },
* ]
*/方法封裝:
export const difference = (a, b, key = null) => {
return [...a, ...b].filter(i => ![a, b].every(g => (key ? g.map(i => i[key]).includes(i[key]) : g.includes(i))))
}到此這篇關于JavaScript數(shù)據(jù)分析之交集,并集,對稱差集的文章就介紹到這了,更多相關JS交集,并集,對稱差集內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
用js限制網(wǎng)頁只在微信瀏覽器中打開(或者只能手機端訪問)
這篇文章主要介紹了用js限制網(wǎng)頁只在微信瀏覽器中打開,很多電影站也是這么限制的,原因你懂的,需要的朋友可以參考下2020-01-01
JavaScript中運算符規(guī)則和隱式類型轉換示例詳解
JavaScript中運算符規(guī)則的隱式類型轉換是什么? 這是每個學習Javascript的新手們都應該知道的一個問題,下面這篇文章主要給大家介紹了關于JavaScript中運算符規(guī)則和隱式類型轉換的相關資料,需要的朋友可以參考借鑒,下面來一起看看吧。2017-09-09
echarts堆疊柱狀圖柱子之間間隔開具體實現(xiàn)代碼
ECharts是一個強大的數(shù)據(jù)可視化庫,它的堆疊柱狀圖通常用于比較各個分類的數(shù)據(jù)總量,這篇文章主要給大家介紹了echarts堆疊柱狀圖柱子之間間隔開具體實現(xiàn)的相關資料,需要的朋友可以參考下2024-11-11

