likes
comments
collection
share

优化实战 第 41 期 - 数据分析之交集、并集、对称差集

作者站长头像
站长
· 阅读数 25

优化实战 第 41 期 - 数据分析之交集、并集、对称差集

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

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

列表交集

  • 代码注释
    /**
    * @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)))]
    }
    

列表对称差集

转载自:https://juejin.cn/post/7122709050671759374
评论
请登录