javascript - 将数组分割成特定大小的 block 并将它们变成多维数组

标签 javascript arrays multidimensional-array

function chunk(arr, size) {
  var awn = [];
//sets up an empty array
  if(size < 0) {
    return arr;
  } else if(size === 1) {
    for(var i = 0; i < arr.lenght; i += size) {
      awn.push(arr[i]);
    }
  } else if(size === 2) {
    for(var x = 0; x < arr.length; x += size) {
      awn.push([arr[x], arr[x + 1]]);
    }
  } else if(size === 3) {
    for(var j = 0; j < arr.length; j += size) {
      awn.push([arr[j], arr[j + 1], arr[j + 2]]);
    }
  } else if(size === 4) {
    awn.push([arr[0], arr[1], arr[2], arr[3]],[arr[4], arr[5]]);

  }
  return awn;
}

chunk(['a', 'b', 'c', 'd'], 2);
chunk([0, 1, 2, 3, 4, 5], 4);

这是我为了尝试解决这个问题而写的,但我认为它可以做得更优雅一点,而且它仅在大小小于 4 时才有效。

最佳答案

您可以使用化简器,并使用余数运算符可以检查何时拆分:

function chunk(arr, size) {
  return arr.reduce(function(acc, x, i) {
    if (i % size === 0) {
      acc.push([x])
    } else {
      acc[acc.length-1].push(x)
    }
    return acc
  },[])
}

chunk([0,1,2,3,4,5,6,7,8,9], 4)
//^ [[0,1,2,3], [4,5,6,7], [8,9]]

关于javascript - 将数组分割成特定大小的 block 并将它们变成多维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31496590/

相关文章:

Eclipse 中的 Javascript 语法突出显示不起作用?

javascript - JavaScript单击函数播放mp3,而不循环

javascript - lodash _.includes 的 Vanilla Javascript 等价物

c++ - 从 C++ 中的函数返回二维数组

php - 如何在 PHP 中将 .csv 文件解析为多维数组?

Javascript 将两个多维数组与公共(public)匹配元素合并

javascript - 使用 Dropzone 和 individual 输入字段进行多次上传

php - 如何使用逗号分隔值将数据库值存储在数组中

Java:多维数组问题

javascript - 将来自用户 inmidatley 的输入添加到 &lt;input&gt;