当前位置:  开发笔记 > 编程语言 > 正文

n *个数组中的替代项合并

如何解决《n*个数组中的替代项合并》经验,为你挑选了1个好方法。

我有一个包含多个其他数组的大型数组。例如

let allLines = [['a', 'b'], ['c', 'd', 'e'], ['f', 'g', 'h']];

我需要一个合并数组项并将其可能的组合追加到textarea中的函数。他们需要像这样合并:

[a, c, f]
[a, c, g]
[a, c, h]
[a, d, f]
[a, d, g]
[a, d, h]
[a, c, f]
...

所有可能的组合应循环生成,并将其附加到textarea。在此示例中,可能有18种组合。我已经尝试过这样的事情:

let lengths = allLines.map(function(a){return a.length;});
let biggest = Math.max.apply(null, lengths);
a = [];

for (let i = 0; i < allLines.length; i++) { 
   for (let j = 0; j < biggest; j++) {
     if(allLines[i][j] == undefined) {
         break;
       }
       a[i] = allLines[i][j];
     }
     // console.log(a);
  }

有任何想法吗?



1> Nina Scholz..:

您可以构建笛卡尔积。

const
    values = [['a', 'b'], ['c', 'd', 'e'], ['f', 'g', 'h']],
    result = values.reduce((a, b) => a.reduce((r, v) => r.concat(b.map(w => [].concat(v, w))), []));

result.map(a => console.log(...a));
.as-console-wrapper { max-height: 100% !important; top: 0; }
推荐阅读
雨天是最美
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有