假设我有以下3个数组:

 Shirts [White, Navy, Light Blue, Gray],
 Pants [Black, Navy, Gray],
 Ties [Houndstooth, Polka Dot, Herringbone, Solid]

我应该怎么做才能得到这个结果

 White Shirt with Black Pants and a Houndstooth Tie,
 White Shirt with Black Pants and a Polka Dot Tie,
 White Shirt with Black Pants and a Herringbone Tie,
 White Shirt with Black Pants and a Solid Tie,

 White Shirt with Navy Pants and a Houndstooth Tie,
 White Shirt with Navy Pants and a Polka Dot Tie,
 White Shirt with Navy Pants and a Herringbone Tie,
 White Shirt with Navy Pants and a Solid Tie,

 And so on,
 And so on...

#1楼 票数:2

只是为了计算? 这很容易。

乘以它们。 5*3*4=60变体。

如果您需要所有变体作为文本:

 var shirts = ['White', 'Navy', 'Light Blue', 'Gray']; var pants = ['Black', 'Navy', 'Grey']; var ties = ['Houndstooth', 'Polka Dot', 'Herringbone', 'Solid']; for(var s in shirts) { for(var p in pants) { for(var t in ties) { document.write(shirts[s] + ' Shirt with ' + pants[p] + ' Pants and a ' + ties[t] + ' Tie<br>'); } } } 

#2楼 票数:2 已采纳

只需循环其中之一,为每个数组输出索引。 为此,您需要在循环内部使用循环,每个循环使用不同的索引:

 var shirts = ["White", "Navy", "Light Blue", "Gray"]; var pants = ["Black", "Navy", "Gray"]; var ties = ["Houndstooth", "Polka Dot", "Herringbone", "Solid"]; for (var i = 0; i < shirts.length; i++) { var start = shirts[i] + " shirt with "; for (var j = 0; j < pants.length; j++) { var middle = pants[j] + " pants and a "; for (var k= 0; k < ties.length; k++) { var end = ties[k] + " tie.<br />"; document.write(start + middle + end); } } } 

您可以通过简单地将三个数组的.length乘在一起,将总数分配给一个变量,然后输出该变量来获得总数:

 var shirts = ["White", "Navy", "Light Blue", "Gray"]; var pants = ["Black", "Navy", "Gray"]; var ties = ["Houndstooth", "Polka Dot", "Herringbone", "Solid"]; var total_combinations = shirts.length * pants.length * ties.length; document.write("Total number of combinations: " + total_combinations); 

要获得随机输出,可以对数组索引使用Math.floor()Math.random() ,如下所示:

 var shirts = ["White", "Navy", "Light Blue", "Gray"]; var pants = ["Black", "Navy", "Gray"]; var ties = ["Houndstooth", "Polka Dot", "Herringbone", "Solid"]; var random_shirt = shirts[Math.floor(Math.random()*shirts.length)]; var random_pants = pants[Math.floor(Math.random()*pants.length)]; var random_tie = ties[Math.floor(Math.random()*ties.length)]; document.write(random_shirt + " shirt with " + random_pants + " pants and a " + random_tie + " tie."); 

希望这可以帮助! :)

  ask by Ferrius translate from so

未解决问题?本站智能推荐:

1回复

计算可能的组合

我有一个快速的问题。 我的数学很差,所以当我阅读有关此的其他帖子时,对我来说毫无意义。 我正在创建一个集换式卡牌游戏,我需要知道我的卡片生成器可以生成多少种可能的卡牌组合。 -每张卡都有1到100的随机百分比奖励。 -有四种颜色类型(红、蓝、绿、紫),共4种。 - 每种颜色有 20 种子类型。
3回复

如何获得数组中元素的所有可能组合,包括顺序和长度

function getAllCombinations(arr) { var f = function(arr) { var result = []; var temp = []; for (var i = 0; i < arr.length; i++) { temp = []; te
2回复

循环遍历数组中数组中的值。输出所有组合

我有一个对象。 我想遍历它的一个属性:它本身是一个包含值的数组数组。 对于这些值中的每一个,我想输出一个包含来自每个子数组的代表值的数组,以便输出每个可能的值组合。 如果子数组中有多个值,则一次最多允许有 1 个值。 在这一点上,我认为它应该“跳到”下一个(并对所有其他人做同样的事情),但我不确定如
1回复

获取两个数字之间由ASCII字符生成的字符串的所有可能组合

我需要一个简单的javascript函数,它需要3个输入 1-启动ASCII值 2-结束ASCII值 3-字符串长度 该函数将从起始值循环到结束值,直到长度为止。 例如, 开始 - 65 结束 - 67 长度-2 我想要[65,66,67]的ASCII的所有组
9回复

返回数组中所有可能的数字组合,其总和小于或等于n

也许我错过了一些正确的答案,但你明白了。 真的很想知道如何解决这个问题!
1回复

如何从多维数组创建不同级别的组合?

这是单个数组组合。 但我想知道结合多个的最佳方法是什么? 更新问题: 组合应该在数组之间排列,但不包括任何单个数组本身。 我还需要将它们分别组合并排列成 2D/3D/4D 阵列。 感谢您的帮助。
1回复

获取有关组的值的所有uniq组合

我有一组属性值: 例: 现在,我想获取给定成员属性的所有唯一组合。 因此,如果我想要成员属性“ a”和“ b”的唯一组合,结果将是: 我需要能够提供n个输入成员属性,但只能为2个输入属性实现所需的结果。 当前的可怕解决方案: 开玩笑测试失败的示例:
2回复

我如何将所有组合附加到列表中?

在完成创建所有组合之后,我不完全确定如何在数组中附加所有项目。 我试图对代码进行一些修改,但我最终搞砸了。 示例: