手写lodash的chunk函数

169 阅读1分钟

手写loadsh函数的第一天

<script>
      // 原始数组
      const arr = [1, 2, 3, 4, 5, 6, 7];
      // 定义一个函数来将数组分割成指定大小的块
      function chunk(array, size = 1) {
        // 如果指定的分割大小大于数组长度,显示警告并返回
        if (size > array.length) {
          alert("您要分割的值太大了");
          return;
        }
        // 如果指定的分割大小小于等于零,显示警告并返回
        if (size <= 0) {
          alert("分割的值不能小于0,或者等于零");
          return;
        }
        // 用于存储分割后的新数组块
        const newArr = [];
        // 计算需要分割成多少个数组块
        let newsize = Math.ceil(arr.length / size);
        // 定义一个变量来追踪当前遍历的起始位置
        let jqk = 0;
        // 循环创建新的数组块
        for (var i = 1; i <= newsize; i++) {
          // 定义一个临时数组用来存储当前块的元素
          const arr = [];
          // 计算当前块的结束位置
          let qka = jqk + size;
          // 遍历原始数组,将元素添加到当前块中
          for (let j = jqk; j < qka; j++) {
            // 只有当原始数组的第 j 个值不是 undefined 时才添加到当前块
            if (array[j] != undefined) {
              // 将元素添加到当前块
              arr.push(array[j]);
              // 更新起始位置
              jqk += 1;
            }
          }

          // 将当前块添加到新数组中
          newArr.push(arr);
        }
        // 返回分割后的新数组
        return newArr;
      }
      // 调用函数并打印结果,分割大小为 1
      console.log(chunk(arr, 1));
    </script>