繁体   English   中英

如何从数组中取出每第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];

Output 将是

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 整除的 arrays。您可以在此示例中看到剩余的 object 在其自己的数组中。

 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);

让我知道这是否有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM