3-23 数组拆分

问题:有一个数组 arr = [a1, a2, a3, b1, b2, b3, c1, c2, c3...], 通过算法将数组进行拆分, 转化为如下格式的数组 [a1, b1,c1], [a2, b2, c2], [a3, b3, c3]并实现通用公式.

总体思路:将数组的 n-1 下标下的内容,挑选出来

思考有什么 问题 why?

  1. 原始的数组 [0,1,2,3,4,5,6,7,8] 的规律
  2. 需要拿到遍历的次数?
  3. 怎么挑出我需要的数字?
// 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 ] ]
posted @ 2022-03-23 23:24  林见夕  阅读(52)  评论(0编辑  收藏  举报