问题:有一个数组 arr = [a1, a2, a3, b1, b2, b3, c1, c2, c3...], 通过算法将数组进行拆分, 转化为如下格式的数组 [a1, b1,c1], [a2, b2, c2], [a3, b3, c3]并实现通用公式.
总体思路:将数组的 n-1 下标下的内容,挑选出来
思考有什么 问题 why?
- 原始的数组 [0,1,2,3,4,5,6,7,8] 的规律
- 需要拿到遍历的次数?
- 怎么挑出我需要的数字?
// 0 1 2 3 4 5 6 7 8
// 0 3 6
// 1 4 7
// 2 5 8
打印 0 3 6, 1 4 7, 2 5 8
for (let i = 0; i <= 8; i += 3) {
console.log(i); // 0 3 6
}
for (let i = 1; i <= 8; i += 3) {
console.log(i); // 1 4 7
}
for (let i = 2; i <= 8; i += 3) {
console.log(i); // 2 5 8
}
分析得出,i 是 变化的部分
得出:
function slice(arr, sliceCount = 3) {
const result = [];
let minx = [];
if (Array.isArray(arr)) {
// 取得遍历的次数
let count = Math.ceil((arr.length - 1) / sliceCount);
for (let i = 0; i < count; i++) {
for (let j = i; j <= arr.length - 1; j += sliceCount) {
minx.push(arr[j]);
}
result.push(minx);
minx = [];
}
} else {
throw new TypeError("error");
}
return result;
}
console.log(slice([0, 1, 2, 3, 4, 5, 6, 7, 8])); // [ [ 0, 3, 6 ], [ 1, 4, 7 ], [ 2, 5, 8 ] ]