本文介绍在JavaScript中如何处理数组的交集、并集及对称差集运算。通过封装intersection、union和difference三个核心方法,支持基于对象键值或原始值的集合操作,帮助开发者高效完成数据去重、对比与合并任务。

数据结构构成了待处理问题的数学模型,而算法则是解决这些问题的具体策略。
软件工程师不仅需要准确理解并把控现实业务问题,还需深入掌握数据结构与算法,以便构建合适的数学模型和算法方案,从而支撑后续的开发工作。这充分说明了数据结构与算法在工程实践中的核心地位。
列表交集
代码注释:
/**
* @description 两个列表的交集
* @param {Array} a 列表源数据
* @param {Array} b 列表源数据
* @return {Array} 目标数据
* @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 列表源数据
* @param {Array} b 列表源数据
* @return {Array} 目标数据
* @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 列表源数据
* @param {Array} b 列表源数据
* @return {Array} 目标数据
* @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数据分析之交集,并集,对称差集的文章就介绍到这了,更多相关JS交集,并集,对称差集内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!