gpt4 book ai didi

javascript - 寻找号码选择的可能性

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:22:43 25 4
gpt4 key购买 nike

我在 javascript 中有以下示例数据:

var variations = [
{group: 1, id: 1},
{group: 1, id: 2},
{group: 1, id: 3},
{group: 1, id: 4},
{group: 2, id: 5},
{group: 2, id: 6},
{group: 2, id: 7},
{group: 3, id: 8},
{group: 3, id: 9}
];

假设我已经使用以下变量定义了选择:

var selected_variation_groups = [1,2,3];
var selected_variation_group_ids = [1,2,3,4,5,6,7,8,9];

当我尝试从上述数据中找出选择数的可能性时,我会有 24 种可能性:

=> 1, 5, 8
=> 1, 5, 9
=> 1, 6, 8
=> 1, 6, 9
=> 1, 7, 8
=> 1, 7, 9

=> 2, 5, 8
=> 2, 5, 9
=> 2, 6, 8
=> 2, 6, 9
=> 2, 7, 8
=> 2, 7, 9

=> 3, 5, 8
=> 3, 5, 9
=> 3, 6, 8
=> 3, 6, 9
=> 3, 7, 8
=> 3, 7, 9

=> 4, 5, 8
=> 4, 5, 9
=> 4, 6, 8
=> 4, 6, 9
=> 4, 7, 8
=> 4, 7, 9

有没有人可以帮我给出算法,或者有没有人可以帮我提供javascript代码来创造这些可能性?

groupid可以是无限的。

最佳答案

您正在计算从每个组中选择一个项目的所有排列。

如果您将所有组排列成一个数组,那么编码会更容易,因此第 1 组的所有数据都在一个数组中,第 2 组的数据在另一个数组中,依此类推。

此函数会将组的所有排列添加到数组中,值以逗号分隔。

var groups = [
[1,2,3,4], [5,6,7], [8,9]
];

var result = new Array();
appendPermutation(groups, 0, groups.length, "", result);

alert(result.length);
alert(result);


function appendPermutation(groups, start, end, currentResult, result)
{
if (start==end)
{

result.push(currentResult);
return;
}

var group = groups[start];
for (var i=0; i<group.length; i++) {
var value = group[i].toString();
var nextResult;
if (currentResult.length==0)
nextResult = currentResult + value;
else
nextResult = currentResult + "," + value;
appendPermutation(groups, start+1, end, nextResult, result);
}
}

关于javascript - 寻找号码选择的可能性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3360614/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com