当前位置 : 主页 > 手机教程 > 手机资讯 >

JavaScript数据分析之交集,并集,对称差集

来源:互联网 收集:自由互联 发布时间:2023-01-20
目录 列表交集 列表并集 列表对称差集 数据结构是待处理问题的数学模型,算法则是处理问题的策略。 作为软件工程师除了要对现实问题有很好的理解与把控外,还要深谙数据结构与
目录
  • 列表交集
  • 列表并集
  • 列表对称差集

数据结构是待处理问题的数学模型,算法则是处理问题的策略。

作为软件工程师除了要对现实问题有很好的理解与把控外,还要深谙数据结构与算法才能找到合适的数学模型和算法,从而服务于后续的工作。由此数据结构与算法的重要性可见一斑。

列表交集

代码注释:

/**
* @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交集,并集,对称差集内容请搜索自由互联以前的文章或继续浏览下面的相关文章希望大家以后多多支持自由互联!

上一篇:uniapp中renderjs使用与传值问题
下一篇:没有了
网友评论