如何从数组中取出每第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);
如果有帮助请告诉我。
我对 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);
如果有帮助请告诉我。