【发布时间】:2020-10-28 05:12:51
【问题描述】:
我想将一个数组拆分为 n 个子数组。 我不在乎每个数组中有多少元素,但元素必须分布在所有可用的子数组中。
像这样,解决方案 A 和 B 是两种方法,但 我正在寻找解决方案 A:
a = [1,2,3,4,5,6,7,8,9]
into_subarrays(a, 2);
- 解决方案 A => [[1,3,5,7,9],[2,4,6,8]]
- 解决方案 B => [[1,2,3,4,5],[6,7,8,9]]
into_subarrays(a, 4);
- 解决方案 A => [[1,5,9],[2,6],[3,7],[4,8]]
- 解决方案 B => [[1,2,3],[4,5],[6,7],[8,9]]
into_subarrays(a, 6);
- 解决方案 A => [[1,7],[2,8],[3,9],[4],[5],[6]]
- 解决方案 B => [[1,2],[3,4],[5,6],[7],[8],[9]]
into_subarrays(a, 12);
- 解决方案 A => [[1],[2],[3],[4],[5],[6],[7],[8],[9],[],[], []]
- 解决方案 B => [[1],[2],[3],[4],[5],[6],[7],[8],[9],[],[], []]
我有这个解决方案,我只是想确保它尽可能高效:
into_subarrays(myArray, chunks=2){
var a = myArray.slice(); //Copy array so that the original is not modified
var i = 0;
var result = [];
while(a.length){
//Create array if needed
if (typeof result[i] == 'undefined'){
result[i] = [];
}
result[i].push(a.shift());
i++;
i = (i == chunks) ? 0 : i; //Wrap around chunk selector
}
return result;
}
谢谢。
【问题讨论】:
-
这个问题可能更适合codereview.stackexchange.com。
-
谢谢,我不知道它存在。我只是将我的答案作为解决方案发布并转到 codereview.stackexchange
标签: javascript arrays slice