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

 更新时间:2022年07月22日 09:18:05   作者:​ 丢丢哥  ​  
这篇文章主要介绍了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对象扩展方法的用法详解

    JavaScript对象扩展方法的用法详解

    JavaScript对象中的可扩展性指的是:是否可以给对象添加新属性。所有的内置对象和自定义对象显示的都是可扩展的,对于宿主对象,则由JavaScript引擎决定
    2022-11-11
  • 用js限制网页只在微信浏览器中打开(或者只能手机端访问)

    用js限制网页只在微信浏览器中打开(或者只能手机端访问)

    这篇文章主要介绍了用js限制网页只在微信浏览器中打开,很多电影站也是这么限制的,原因你懂的,需要的朋友可以参考下
    2020-01-01
  • JS 俄罗斯方块完美注释版代码

    JS 俄罗斯方块完美注释版代码

    JS俄罗斯方块完美注释版 v 1.01 从学c语言那一会儿都想写一个俄罗斯方块,可是每次动起手总觉得难度太大. 今天终于用了大约4个小时写出来了. 其中在涉及到方块变型的时候还咨询了
    2008-11-11
  • JavaScript中运算符规则和隐式类型转换示例详解

    JavaScript中运算符规则和隐式类型转换示例详解

    JavaScript中运算符规则的隐式类型转换是什么? 这是每个学习Javascript的新手们都应该知道的一个问题,下面这篇文章主要给大家介绍了关于JavaScript中运算符规则和隐式类型转换的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-09-09
  • 微信小程序如何自定义table组件

    微信小程序如何自定义table组件

    这篇文章主要介绍了微信小程序如何自定义table组件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-06-06
  • javaScript 删除确认实现方法小结

    javaScript 删除确认实现方法小结

    因为对于内容的删除是件很重要的事,所以一般的系统中,都需要删除确认一下,以免误删,具体的方法如下,大家可以参考下。
    2009-12-12
  • JS截取字符串实例详解

    JS截取字符串实例详解

    这篇文章主要介绍了JS截取字符串的方法,结合实例形式较为详细的分析了JavaScript截取字符串的常用函数与具体使用技巧,并附带说明了JS截取字符串substr和substring方法的区别,需要的朋友可以参考下
    2015-11-11
  • echarts堆叠柱状图柱子之间间隔开具体实现代码

    echarts堆叠柱状图柱子之间间隔开具体实现代码

    ECharts是一个强大的数据可视化库,它的堆叠柱状图通常用于比较各个分类的数据总量,这篇文章主要给大家介绍了echarts堆叠柱状图柱子之间间隔开具体实现的相关资料,需要的朋友可以参考下
    2024-11-11
  • JavaScript自定义鼠标右键菜单栏

    JavaScript自定义鼠标右键菜单栏

    这篇文章主要为大家详细介绍了JavaScript自定义鼠标右键菜单栏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-07-07
  • 在JavaScript中实现命名空间

    在JavaScript中实现命名空间

    在JavaScript中实现命名空间...
    2006-11-11

最新评论