迪卡算法求积(n * n)

  • 使用 array.reduce 的方式实现 笛卡尔积算法
    const arr = [
    ['黑色', '白色', '蓝色'],
    ['1.2KG', '2.0KG', '3.0KG'],
    ['a', 'b'],
    ['aa', 'bb']
    ]; function descartes(array){
    if( array.length < 2 ) return array[0] || []; return array.reduce((pre, cur, index) => {
    // 第一次遍历的时候我们可以直接返回当前对象
    if(index === 0) {
    return cur
    }
    // 利用 reduce 的方式实现,需要定义一个临时的变量
    const _sku = []
    // 利用冒泡的方式进行组合
    pre.forEach(c => {
    cur.forEach(item => {
    _sku.push(`${c}:${item}`)
    })
    })
    console.log(_sku)
    // 返回新组合的数据
    return _sku
    }, [])
    } // 会输出 3 * 3 * 2 *2 中组合
    console.log(descartes(arr));
  • 通过组合遍历的方式实现(思路和 reduce 差不多)
      let _sku = []
    arr.forEach(c => {
    if(!_sku.length) {
    _sku = c
    } else {
    const inner = []
    c.forEach(c1 => {
    inner.push(..._sku.map(item => `${item}:${c1}`))
    }) _sku = inner
    }
    }) console.log(_sku)

最新文章

  1. Javascript学习笔记:3种检测变量类型的方法
  2. 基于Metronic的Bootstrap开发框架经验总结(8)--框架功能总体界面介绍
  3. 多级下拉菜单zz
  4. PHP开发者常犯的10个MySQL错误
  5. 初学springMVC搭建框架过程及碰到的问题
  6. ASP.NET MVC 使用带有短横线的html Attributes
  7. HTML5培训哪里靠谱
  8. C++ Primer 5 CH6 函数
  9. 201521123047 j第五周学习总结
  10. U盘无法安装win10提示Your PC/Device needs to be repaired
  11. Java 开发环境配置
  12. python5 数字类型 字符串类型 列表类型
  13. Kaldi nnet3的前向计算
  14. Python学习—数据库篇之练习题
  15. 01 Windows安装Tensorflow
  16. 【转载】WIN7访问共享:0x80070035 找不到网络路径解决方法
  17. 02-Introspector内省设置单个属性
  18. Java学习笔记之——冒泡排序
  19. Linux服务器---邮件服务postfix安装
  20. iOS进阶学习笔记

热门文章

  1. 【LeetCode】784. Letter Case Permutation 解题报告 (Python&C++)
  2. 【LeetCode】416. Partition Equal Subset Sum 解题报告(Python & C++)
  3. 【Java例题】3.4求a+aa+aaa+aaaa+... ...+aa...a(n个
  4. Java实习生常规技术面试题每日十题Java基础(八)
  5. Java初学者作业——编写 Java 程序,定义 Java 类 (Point) 用来表示坐标,坐标范围在(0,0)到(100,100)以内,并显示合法的坐标在控制台。
  6. 【MySQL作业】DDL 和 DML——美和易思使用 DDL 维护数据库表结构应用习题
  7. Centos8 设置中文
  8. 官方文档粗读 - Tutorial
  9. Python之路 - Day4 - Python基础4 (新版)
  10. Elasticsearch打造全文搜索引擎(一)