繁体   English   中英

JavaScript中二维数组的所有可能组合

All possible combinations of a 2d array in Javascript

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

所以我有一个可变长度数组,里面充满了可变长度数组。 例如:

var arr2d = [
    ['red', 'blue'],
    ['cotton','polyester','silk'],
    ['large','medium','small']
]

我正在尝试从每个数组中获取一个的所有可能组合。 因此答案应如下所示:

var answer = [
    ['red', 'cotton', 'large'],
    ['red', 'cotton', 'medium'],
    ['red', 'cotton', 'small'],
    ['red', 'polyester', 'large'],
    .
    .
    .
]

我已经研究了有关该主题的其他答案,但是它们都在java中(我需要JavaScript),并且他们正在寻找所有组合,而不仅限于length === arr2d.length的组合。 我已经研究了将近2个小时,但仍然想不出一种递归的方法。 这是那些爆炸的场景之一,因为这两个数组的长度都不同(我有这些2d数组的数组,我必须获得这些数组的组合)。 在我列出的示例中,只有18种可能性,但实际上可能是成千上万种。

2 个回复

使用递归函数时的另一种选择是在函数的参数中保持状态。 有时可以使函数更易于理解:

 var arr2d = [['red', 'blue'],['cotton','polyester','silk'],['large','medium','small']] function combos(list, n = 0, result = [], current = []){ if (n === list.length) result.push(current) else list[n].forEach(item => combos(list, n+1, result, [...current, item])) return result } console.log(combos(arr2d)) 

这是一个递归解决方案。 这个想法是采用第一个元素数组,在剩余的元素数组上递归找到组合,然后组合结果:

 const arr2d = [ ['red', 'blue'], ['cotton', 'polyester', 'silk'], ['large', 'medium', 'small'] ]; function combinations(arr) { if (arr.length === 0) return [[]]; let res = [], [first, ...rest] = arr; let remaining = combinations(rest); first.forEach(e => { remaining.forEach(smaller => { res.push([e].concat(smaller)); }); }); return res; } console.log(combinations(arr2d)); 

2 二维数组的所有可能组合[重复]

这个问题在这里已有答案: 生成所有可能的组合 11个答案 我想从2D [mxn]数组生成所有可能的组合,除了每个数组的第一个元素。 该元素将代表表示其余元素的“类型”。 例如,如果我有一个数组 所需的输出应该是衬衫的所有可能性的组合。 对于上面的例子, ...

3 Java中二维数组的总和

我创建了一个名为2d的对象数组,该对象存储一个String国家和一个double数组。 我在执行某个功能以在某个时期内检索一个国家的蜂窝统计数据之和时遇到麻烦。 基本上,如果year小于1983(因为数据的起始年份始于1983),它应该返回-1,因为它超出范围。 尝试实现的功能称为 ...

4 C中二维数组的排序

我是 c 的初学者。 对二维数组有点困惑,这在 python 中很容易。 假设我声明了一个数组 [100][2] 并读取它们的读数。 然后我只想通过一维对元素进行排序。 如果我不能说清楚,这里是在 python 中完美运行的代码(这个逻辑)。 但是在 c 中,它在排序时出错。 那么C中的正确方法 ...

5 C中二维数组的“方向”

作为C新手,我对二维数组有点困惑。 如果我想表示一个包含3行和5列的矩阵,我想正确的声明是: 那么,这是一个由3个字符串组成的3个指针数组还是什么? 为什么每当我尝试循环通过它时,如果它似乎读错了结果? 是否有以下等效和正确的方法来初始化它? 感谢任何最终即将 ...

2009-05-01 19:45:39 8 1784   c/ arrays
6 PHP中二维数组的总和

我遇到一种情况,需要每月产生总销售额。 我可以显示某个区域中12个月的总销售额,但是我需要显示某个区域中任何一个月的总销售额。 即:总部地区6月的总销售额。 我的示例代码如下: ...

7 C中二维数组的大小

我有以下二维数组: 但如何获取最后45行的sizeof数组,例如a[55][0]到a[99][99] ? 我们可以做一些像sizeof(&a[55])吗? ...

8 C中二维数组的大小

我有一个二维数组表示为双指针- 现在我在arr中有100行3列。但是这个数组用在其他地方,它填充的行远远少于100.所以我如何获得大小(填充的行数)以打印此数组? ...

2015-02-20 09:24:36 2 123   c
9 java中二维数组的问题

这里相当新,对Java也相当新。 去年春天通过了我的编程 1 课程和 A,现在我来到了编程 2,我终于在挣扎了。 通常我不会寻求帮助,如果你决定帮助,请不要握住我的手。 我主要是想找人帮我完成这项任务。 所以任务必须: 一种。 声明一个合适的数据结构来保存这样的天空图像。 湾将数据文件“s ...

10 Python中二维数组的对数

我有一个名为矩阵的二维数组数组。 其中的每个矩阵的尺寸为1000 x 1000 ,由正值组成。 现在我想记录所有矩阵中的所有值(0除外)。 如何在python中轻松完成此操作? 我有以下代码可以做我想要的,但是知道Python这可以更简单: ...

2019-02-15 10:51:42 5 95   python
暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM