JavaScript数据分析之交集,并集,对称差集
数据结构是待处理问题的数学模型,算法则是处理问题的策略。
作为软件工程师除了要对现实问题有很好的理解与把控外,还要深谙数据结构与算法才能找到合适的数学模型和算法,从而服务于后续的工作。由此数据结构与算法的重要性可见一斑。
列表交集
代码注释:
/** * @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交集,并集,对称差集内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
javascript数组中的concat方法和splice方法
这篇文章主要介绍了javascript数组中的concat方法和splice方法,concat方法作用合并数组,可以合并一个或多个数组,会返回合并数组之后的数据,不会改变原来的数组,更多相关内容需要的小伙伴可以参考下面文章内容2022-03-03javascript判断两个IP地址是否在同一个网段的实现思路
要判断两个IP地址是否在同一个网段,将它们的IP地址分别与子网掩码做与运算,得到的结果为网络号,具体实现如下,需要的朋友可以参考下2013-12-12利用CSS、JavaScript及Ajax实现图片预加载的方法
预加载图片是提高用户体验的一个很好方法,实现图片预加载可以使用css、JavaScript、Ajax三种方法。下面逐一给大家介绍利用CSS、JavaScript及Ajax实现图片预加载的方法,需要的朋友参考下吧2016-11-11Javascript中toFixed计算错误(依赖银行家舍入法的缺陷)解决方法
这篇文章主要介绍了Javascript中toFixed计算错误(依赖银行家舍入法的缺陷)解决方法,非常具有实用价值,需要的朋友可以参考下2017-08-08
最新评论