javascript - 将数组拆分为组

标签 javascript arrays algorithm

我应该编写一个函数,将数组(第一个参数)分成长度为 size(第二个参数)的组,并将它们作为二维数组返回。 因此,chunkArrayInGroups(["a", "b", "c", "d"], 2) 应该返回 [["a", "b"], ["c", "d"]]

function chunkArrayInGroups(arr, size) {
  // Break it up.
  var result=[];
  for (var i=0;i<=Math.ceil(arr.length/size);i++){

      var j=0;
      if(i!== 0){
        j+=size;
        size+=size;
      }

      result[i] = arr.slice(j , size);  

  }
  //return arr.length/size 
  //results in 1.5

return result;
// results [["a", "b"], ["c", "d"]]


}

chunkArrayInGroups(["a", "b", "c", "d"], 2);

我得到了想要的结果,但我对我的解决方案不是很满意, 还有,更重要的是 “如果” arr.length = 4;并且,尺寸=2;那为什么是 arr.length/size = 1 ? 不应该是 4/2=2 吗?

最佳答案

我会让 i 迭代每个组开始的原始数组中的索引,而不是组的索引。

function chunkArrayInGroups(arr, size) {
  var result = [];
  for (var i=0; i<arr.length; i+=size)
    result.push(arr.slice(i, i+size));
  return result;
}

还要考虑一个生成器:

function* chunkArrayInGroups(arr, size) {
  for (var i=0; i<arr.length; i+=size)
    yield arr.slice(i, i+size);
}

关于javascript - 将数组拆分为组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37644121/

相关文章:

arrays - 多模式匹配算法

Javascript 循环和迭代

javascript - [Vue 警告] : Error in render: "TypeError: undefined is not an object (evaluating ' this. $store.state')"

javascript - 如何在vuejs中从javascript导出数据?

javascript - 多维数组的嵌套 ng-repeat

c++ - 数组的大小 C++

javascript - 在 Plotly Javascript 中跳过重叠的刻度标签

javascript - 如何使用 forEach 循环在 IIFE 中调用数组?

java - 为什么 O(n^2) 与 O(ab) 不同?

arrays - 为什么归并排序算法需要将数组一分为二后再进行排序?