Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JS-将数组拆分为n个组,每个组应具有随机数量的密钥_Javascript - Fatal编程技术网

Javascript JS-将数组拆分为n个组,每个组应具有随机数量的密钥

Javascript JS-将数组拆分为n个组,每个组应具有随机数量的密钥,javascript,Javascript,我有一个这样的数组 var arr = ['a', 'b', 'c', 'e', 'f', 'g'] 我想把这个数组分成n个组。这些组可以持有不同数量的密钥,组不能为空。他们可以把钥匙的数量控制在任何程度。每次的结果都会有所不同。预期结果示例如下: 将数组拆分为3组 [ ['a', 'b'], ['c'], ['e', 'f', 'g'] ] [ ['a'], ['b'], ['c', 'e', 'f', 'g'] ] 将数组拆分为3组的另一

我有一个这样的数组

var arr = ['a', 'b', 'c', 'e', 'f', 'g']
我想把这个数组分成n个组。这些组可以持有不同数量的密钥,组不能为空。他们可以把钥匙的数量控制在任何程度。每次的结果都会有所不同。预期结果示例如下:

将数组拆分为3组

[
    ['a', 'b'],
    ['c'],
    ['e', 'f', 'g']
]
[
    ['a'],
    ['b'],
    ['c', 'e', 'f', 'g']
]
将数组拆分为3组的另一个示例结果

[
    ['a', 'b'],
    ['c'],
    ['e', 'f', 'g']
]
[
    ['a'],
    ['b'],
    ['c', 'e', 'f', 'g']
]

正如您所看到的,始终会有n个组(在本例中为3),并且每个组的密钥量每次都会变化

这个解决方案怎么样。这里也是

函数拆分(数组=[],N){ if(array.length
var arr=['a','b','c','e','f','g'];
var N=3;
var curr=0//当前添加的数字
var ans=[]//应答数组
对于(var x=0;x
尝试以下操作:

var arr=['a','b','c','e','f','g'];
函数getRandomInt(最小值、最大值){
返回Math.floor(Math.random()*(max-min))+min;
}
var结果=[];
var总和=0;
var len=阵列长度;
var left=3;//组数
对于(;左--;){
如果(左>0){
var pick=getRandomInt(1,len-sum-left-1);
}否则{
pick=len sum;
}
结果:推送(arr.splice(0,pick));
总和+=拾取;
}

控制台日志(结果)您可以使用一个循环和数组的其余部分创建一个新的循环

循环生成一个数字并保留至少一个项以填充最后一个数组

var arr=['a','b','c','d','e','f','g'],
结果=[],
pos=0,
计数=0,
groupsLeft=3;
而(--groupsLeft){
count=Math.floor(Math.random()*(arr.length-count-groupsLeft))+1;
结果.推送(arr.slice(pos,pos+=计数));
}
结果:推(arr.slice(pos,arr.length));

控制台日志(结果)
后面是否有逻辑,或者只有3组
N
元素,其中
N
是随机的?一组的长度可以是0吗?@Emilebergron 3是N的例子。所以n可以是4或10或更多100@EmileBergeron每个组必须至少有一个元素。每个组的元素数量可以达到任意值。这是否回答了问题?您应该在问题内部明确这一点,而不仅仅是隐藏在注释中。因为这是堆栈溢出,并且问题被标记为
javascript
,所以您应该包括说明您的解决方案的代码。@emilebergron:不一定。这不是一个代码编写服务,因为没有需要更正的代码,所以没有必要为OP编写代码。IMO,描述解决方案更好。我添加了一个快速原型。我发现解释也更有用,这样他们就可以试着自己去探索。好吧,我两者都做了一些,让每个人都高兴。@Emilebergron:代码编写服务就是这样。不幸的编程是为了解决问题,但是StackOverflow已经成为让其他人来解决问题的地方。请为变量使用相关名称,考虑到这是Stack Overflow,一些注释不会有什么坏处。@Emilebergron,现在好点了吗?我在这里装傻,但是
I
真的是一个相关名称吗?在这种情况下,
i
是什么?这不是我们在简单for循环中经常看到的索引。你是说
i
就像组的数量?为什么我不能通过阅读
I
来判断这一点?(顺便说一句,你仍然装傻)你可以编辑答案,如果你愿意的话,因为答案是这样的。你可以直接在堆栈溢出上使用代码片段,而不是用小提琴。