如何从数组中取出每第n个连续元素?

How to take every nth continuous elements from an array?

我对 javascript 有点陌生,我的目标是取出数组中的每 3 个元素并将它们存储为一个数组以推送到另一个数组。下面是它的样子

var a = [11, 2, 3, 4, 5, 6, 7, 8, 9, 2, 2, 3, 4, 5, 4];

输出将是

var arrays = [[11, 2, 3], [4, 5, 6], [7, 8, 9], [2, 2, 3], [4, 5, 4]]

这些只是整数,但在我的应用程序中,有一个包含 73 个对象的数组,id 喜欢这样存储。

var objects = [{}, {}, {}], [{}, {}, {}] ,,,]

73 不能被 3 整除,根据物体的数量会不会有问题


像这样,这里的对象是任意的。我正在使用 .slice 获取下一组 3,并将其推入缓冲区数组。我在 for 循环中使用 .length 作为我的界限,每次递增 3。

var a = [
  {x:11}, {x:2}, {x:3}, {x:4}, {x:5}, {x:6}, {x:7}, 
  {x:8}, {x:9}, {x:2}, {x:2}, {x:3}, {x:4}, {x:5}, {x:4}
];

buffer = [];
for(i=0; i<a.length; i+=3) {
  buffer.push(a.slice(i, i+3));
}
console.log(buffer);

另外,slice 可以处理不能被 3 整除的数组。你可以在这个例子中看到剩余的对象在它自己的数组中。

var a = [
  {x:11}, {x:2}, {x:3}, {x:4}, {x:5}, {x:6}, {x:7}, 
  {x:8}, {x:9}, {x:2}, {x:2}, {x:3}, {x:4}, {x:5}, 
  {x:4}, {x:112}
];

buffer = [];
for(i=0; i<a.length; i+=3) {
  buffer.push(a.slice(i, i+3));
}
console.log(buffer);

你也可以轻松适配任意n个元素:

var a = [
  {x:11}, {x:2}, {x:3}, {x:4}, {x:5}, {x:6}, {x:7}, 
  {x:8}, {x:9}, {x:2}, {x:2}, {x:3}, {x:4}, {x:5}, 
  {x:4}, {x:112}
];

let n = 4;
buffer = [];
for(i=0; i<a.length; i+=n) {
  buffer.push(a.slice(i, i+n));
}
console.log(buffer);

如果有帮助请告诉我。