首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在javascript中,只从下一个块添加1个元素,从而在javascript中添加块数组

在javascript中,只从下一个块添加1个元素,从而在javascript中添加块数组
EN

Stack Overflow用户
提问于 2018-10-26 02:49:20
回答 2查看 1.1K关注 0票数 1

我希望将JavaScript中的数组划分为3的块,但我只想将块增加1元素。例子如下:

代码语言:javascript
运行
复制
[1,2,3,4,5,6,7,8] => [1,2,3], [2,3,4], [3,4,5], [4,5,6], [5,6,7], [6,7,8]

所有得到的数组都应该大小为3,所以只有一个元素被滑动到左边。

下面的代码将数组划分为3的块:

代码语言:javascript
运行
复制
_.chunk($scope.substituteItems, 3);

此代码将数组划分为: 1,2, 3,4, 5,6,7,8 => 1,2,3,3,3,4,5,5,6,7,8

显然,这段代码只是将数组分割成相等的块,这不是我想要的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-10-26 02:57:09

可以使用reduce()循环数组。使用slice()将数组浅拷贝到块中。

代码语言:javascript
运行
复制
let arr = [1, 2, 3, 4, 5, 6, 7, 8];
let numOfChunk = 3;

let result = arr.reduce((c, v, i, a) => {
  if (i + numOfChunk <= a.length) c.push(a.slice(i, i + numOfChunk));
  return c;
}, [])


console.log(result);

如果您喜欢一行代码,也可以使用concat()而不是push()

代码语言:javascript
运行
复制
let arr = [1, 2, 3, 4, 5, 6, 7, 8];
let numOfChunk = 3;

let result = arr.reduce((c, v, i, a) => i + numOfChunk <= a.length ? c.concat([a.slice(i, i + numOfChunk)]) : c, [])

console.log(result);

票数 2
EN

Stack Overflow用户

发布于 2018-10-26 02:58:34

使用本地的js..。如果您的n元素数组要像您所描述的那样顺序地被块大小为c的块,那么就会有n-c+1总块(在您的例子中是8-3+1=6 ),将数组的第一个n-c+1元素映射到包含自己的块+接下来的2:

代码语言:javascript
运行
复制
let c=3, arr=[1,2,3,4,5,6,7,8];
let result=arr.slice(0,arr.length-c+1).map((v,k)=>arr.slice(k,k+c));
console.log(result); 
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53000747

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档