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

數(shù)據(jù)結(jié)構(gòu)是待處理問題的數(shù)學(xué)模型,算法則是處理問題的策略。
作為軟件工程師除了要對現(xiàn)實問題有很好的理解與把控外,還要深諳數(shù)據(jù)結(jié)構(gòu)與算法才能找到合適的數(shù)學(xué)模型和算法,從而服務(wù)于后續(xù)的工作。由此數(shù)據(jù)結(jié)構(gòu)與算法的重要性可見一斑。
列表交集
代碼注釋:
/**
* @description 兩個列表的交集
* @param {Array} a 列表源數(shù)據(jù)
* @param {Array} b 列表源數(shù)據(jù)
* @return {Array} 目標(biāo)數(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} 目標(biāo)數(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} 目標(biāo)數(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))))
}到此這篇關(guān)于JavaScript數(shù)據(jù)分析之交集,并集,對稱差集的文章就介紹到這了,更多相關(guān)JS交集,并集,對稱差集內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
用js限制網(wǎng)頁只在微信瀏覽器中打開(或者只能手機(jī)端訪問)
這篇文章主要介紹了用js限制網(wǎng)頁只在微信瀏覽器中打開,很多電影站也是這么限制的,原因你懂的,需要的朋友可以參考下2020-01-01
JavaScript中運(yùn)算符規(guī)則和隱式類型轉(zhuǎn)換示例詳解
JavaScript中運(yùn)算符規(guī)則的隱式類型轉(zhuǎn)換是什么? 這是每個學(xué)習(xí)Javascript的新手們都應(yīng)該知道的一個問題,下面這篇文章主要給大家介紹了關(guān)于JavaScript中運(yùn)算符規(guī)則和隱式類型轉(zhuǎn)換的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。2017-09-09
javaScript 刪除確認(rèn)實現(xiàn)方法小結(jié)
因為對于內(nèi)容的刪除是件很重要的事,所以一般的系統(tǒng)中,都需要刪除確認(rèn)一下,以免誤刪,具體的方法如下,大家可以參考下。2009-12-12
echarts堆疊柱狀圖柱子之間間隔開具體實現(xiàn)代碼
ECharts是一個強(qiáng)大的數(shù)據(jù)可視化庫,它的堆疊柱狀圖通常用于比較各個分類的數(shù)據(jù)總量,這篇文章主要給大家介紹了echarts堆疊柱狀圖柱子之間間隔開具體實現(xiàn)的相關(guān)資料,需要的朋友可以參考下2024-11-11

