javascript - 将数组拆分为 N 长度的 block

标签 javascript arrays

<分区>

如何将一个数组(有 10 个项目)拆分为 4 个 block ,每个 block 最多包含 n 个项目。

var a = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'];
//a function splits it to four arrays.
console.log(b, c, d, e);

它打印:

['a', 'b', 'c']
['d', 'e', 'f']
['j', 'h', 'i']
['j']

上面假设 n = 3,但是,该值应该是动态的。

谢谢

最佳答案

可能是这样的:

var a = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'];

var arrays = [], size = 3;
    
while (a.length > 0)
  arrays.push(a.splice(0, size));

console.log(arrays);

参见 splice数组的方法。

一种不改变数组的替代方法,除了在分 block 之前创建它的浅拷贝外,可以通过使用 slice 来完成。和一个 for… 循环:

var a = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'];

var arrays = [], size = 3;
    
for (let i = 0; i < a.length; i += size)
   arrays.push(a.slice(i, i + size));

console.log(arrays);

虽然更面向函数式编程的方法可能是:

const chunks = (a, size) =>
    Array.from(
        new Array(Math.ceil(a.length / size)),
        (_, i) => a.slice(i * size, i * size + size)
    );

let a = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'];

console.log(chunks(a, 3));
console.log(chunks(a, 2));

参见 Array.from以及如何new Array(n)特别有效。

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

相关文章:

java - 如何使用 printf -Java 将二维数组的所有元素排列成完美的表格

javascript - 结果过滤的多个条件

javascript - 如何在最后一次出现时删除数组中的部分字符串

javascript - 电子邮件的表单验证在 Vuejs 中不起作用

mysql - 找不到我的错误

JavaScript for 循环帮助

javascript - 使用 ngFor 循环的索引动态设置类或 id

javascript - 受限制的 JavaScript Array Pop Polyfill 不起作用

javascript - 删除以前添加的类不起作用

javascript - 在 Javascript 中操作的箭头键按钮