javascript - 数组算法中的数组分块

标签 javascript algorithm

关于 stackoverflow 的第一个问题,我正在为这个算法苦苦挣扎。这应该像“[[0, 1], [2, 3], [4, 5], [6, 7], [8]]”一样将我的数组切成 5 个,但我得到的只是“[ [ 0 , 1 ], [ 2, 3 ], [ 4, 5 ], [ 6, 7, 8 ] ]”

function chunkArrayInGroups(arr, size) {
  var newArr = [];
  console.log(Math.floor(arr.length / size));
  for (i = 0; i <= (Math.floor(arr.length / size)) + 1; ++i) {
    var cut = size;
    newArr.push(arr.splice(0, cut));
  }
  if (arr.length > 0) {
    newArr.push(arr.splice(0, size + (arr.length - size)));
  }
  return newArr;
}
chunkArrayInGroups([0, 1, 2, 3, 4, 5, 6, 7, 8], 2);
// expected - [[0, 1], [2, 3], [4, 5], [6, 7], [8]]

如果您对提问的方式有任何建议,我很乐意接受任何建议!

最佳答案

Array#slice 使用一个简单的 for 循环,因为 slice 不会改变原始数组的长度:

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

var result = chunkArrayInGroups([0, 1, 2, 3, 4, 5, 6, 7, 8], 2);

console.log(result);

关于javascript - 数组算法中的数组分块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40919092/

相关文章:

algorithm - Order Of Growth 复杂的循环

javascript - 如何根据开始和结束时间值创建动态表?

javascript - D3 替换数据并重新启动模拟后,并非所有节点都更新

algorithm - 查找数组中每个大小为 k 的窗口的最大值

algorithm - RGB转HSB算法

java - 在 Java 中实现和可视化二叉树

JavaScript 执行上下文,鼠标处理程序内反直觉的作用域链

javascript - 变换函数和光标: pointer not working

javascript - 有没有办法检测 IE1 0's "Caps Lock is on”功能?

string - Boyer More exact 子串是否匹配动态规划的范例?