假设您有一个数组并想将它分成 3 个 block 。如果数组是..
let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13];
...新数组将是
let newArr = [1, 4, 7, 10, 13, 2, 5, 8, 11, 3, 6, 9, 12]
// In other words:
1 2 3
4 5 6
7 8 9
10 11 12
13
分块部分应该是这段代码(如果排序像 newArr
):
let chunkedArr = _.chunk(_.toArray(newArr), 3);
...但是我无法弄清楚如何将 arr
排序为 newArr
以便能够以正确的顺序进行分块。处理这种情况的正确方法是什么?
<子> 请注意,整数只是伪整数,我将使用适当的数组对象。
最佳答案
一种选择是使用 ES6 reduce
将数组分组为多维数组。使用 concat
来展平多维数组。
[].concat(...)
- 基本上展平了多维数组。从一个空数组 []
开始,您可以连接
每个辅助数组。使用扩展运算符 (...
) 重复每个辅助数组并concat
每个。
let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13];
let groups = 3;
let newArr = [].concat(...arr.reduce((c, v, i) => {
let k = i % groups;
c[k] = c[k] || [];
c[k].push(v);
return c;
}, []));
console.log(newArr);
关于javascript - 按 3 的 block 对数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50539132/