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} 目標數(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)))) }
到此這篇關(guān)于JavaScript數(shù)據(jù)分析之交集,并集,對稱差集的文章就介紹到這了,更多相關(guān)JS交集,并集,對稱差集內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
javascript數(shù)組中的concat方法和splice方法
這篇文章主要介紹了javascript數(shù)組中的concat方法和splice方法,concat方法作用合并數(shù)組,可以合并一個或多個數(shù)組,會返回合并數(shù)組之后的數(shù)據(jù),不會改變原來的數(shù)組,更多相關(guān)內(nèi)容需要的小伙伴可以參考下面文章內(nèi)容2022-03-03javascript判斷兩個IP地址是否在同一個網(wǎng)段的實現(xiàn)思路
要判斷兩個IP地址是否在同一個網(wǎng)段,將它們的IP地址分別與子網(wǎng)掩碼做與運算,得到的結(jié)果為網(wǎng)絡(luò)號,具體實現(xiàn)如下,需要的朋友可以參考下2013-12-12利用CSS、JavaScript及Ajax實現(xiàn)圖片預(yù)加載的方法
預(yù)加載圖片是提高用戶體驗的一個很好方法,實現(xiàn)圖片預(yù)加載可以使用css、JavaScript、Ajax三種方法。下面逐一給大家介紹利用CSS、JavaScript及Ajax實現(xiàn)圖片預(yù)加載的方法,需要的朋友參考下吧2016-11-11Javascript中toFixed計算錯誤(依賴銀行家舍入法的缺陷)解決方法
這篇文章主要介紹了Javascript中toFixed計算錯誤(依賴銀行家舍入法的缺陷)解決方法,非常具有實用價值,需要的朋友可以參考下2017-08-08