我有一个如下所示的数组。
[[1, 2, 3, 4, 5, 6], [1, 2, 3, 4, 5, 6]]
我想要这样的数组。
[[[1, 2, 3], [4, 5, 6]], [[1, 2, 3], [4, 5, 6]]]
这是我的方法。
chunk(result, size) {
var finalResluts = result;
for(let j=0; j<result.length; j++){
var k = 0, n = result[j].length;
while (k < n) {
finalResluts[j].push(result[j].slice(k, k += size));
}
}
return finalResluts;
}
console.log(chunk([[1, 2, 3, 4, 5, 6], [1, 2, 3, 4, 5, 6]], 3));
结果显示如下。我在这里做错了什么?
0: Array(8)
0: 1
1: 2
2: 3
3: 4
4: 5
5: 6
6: (3) [1, 2, 3]
7: (3) [4, 5, 6]
这里的参考是 stackblitz https://stackblitz.com/edit/typescript-rmzpby
答案 0 :(得分:1)
问题在于您将 finalResults
初始化为输入数组 results
,因此结果被推送到原始 [1, 2, 3, 4, 5, 6]
数组中。
您需要做的是为输入的每个子数组创建一个空数组,以便稍后填充。使用 map
函数最容易实现:
function chunk(result, size) {
//for each subArray - create empty array
var finalResluts = result.map(subArray => []);
for(let j=0; j<result.length; j++){
var k = 0, n = result[j].length;
while (k < n) {
finalResluts[j].push(result[j].slice(k, k += size));
}
}
return finalResluts;
}
console.log(chunk([[1, 2, 3, 4, 5, 6], [1, 2, 3, 4, 5, 6]], 3));