首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将数组区段映射到新数组

将数组区段映射到新数组
EN

Stack Overflow用户
提问于 2015-12-21 21:03:31
回答 2查看 98关注 0票数 2

我试图将一个数组分割成长度为4的部分,然后将这些部分推入一个新的数组中。我写了一个很小的脚本来解决这个问题,但是我很好奇其他人会怎么解决这个问题。有比我现在做的更好的方法吗?

代码语言:javascript
复制
var test = ['test0', 'test1', 'test2', 'test3', 'test4', 'test5', 'test6', 'test7' ];

var splitTest = test.map(function(value, index) {
    if (index % 4 === 0) {
          return ([test[index], test[index + 1], test[index + 2], test[index+3]]);
    }
}).filter(function(value) {
    return typeof value != 'undefined';
});

下面是我的代码的一个jsbin:https://jsbin.com/zubavivoto/edit?js,console

输入

代码语言:javascript
复制
["test0", "test1", "test2", "test3", "test4", "test5", "test6", "test7"]

输出

代码语言:javascript
复制
[["test0", "test1", "test2", "test3"], ["test4", "test5", "test6", "test7"]]
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-21 21:19:15

我喜欢@JosephYoung的方法,但是如果您想继续使用函数式方法,可以使用reduce

代码语言:javascript
复制
var test = ['test0', 'test1', 'test2', 'test3', 'test4', 'test5', 'test6', 'test7' ];
var splitTest = test.reduce(function(prev, current, index) {
  if (index % 4 === 0) {
    prev.push([current]);
  } else {
    prev[prev.length - 1].push(current);
  }
  return prev;
}, []);

不过,Joseph的迭代方法会更快一些。

票数 3
EN

Stack Overflow用户

发布于 2015-12-21 21:10:15

它不太实用,但能做好工作

代码语言:javascript
复制
var splitTest = [];
var length = test.length;
for(var i = 0; i < length; i+=4){
  splitTest.push(test.slice(i,Math.min(i+4, length)));
}
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34404289

复制
相关文章

相似问题

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