我试图将一个数组分割成长度为4的部分,然后将这些部分推入一个新的数组中。我写了一个很小的脚本来解决这个问题,但是我很好奇其他人会怎么解决这个问题。有比我现在做的更好的方法吗?
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
输入
["test0", "test1", "test2", "test3", "test4", "test5", "test6", "test7"]输出
[["test0", "test1", "test2", "test3"], ["test4", "test5", "test6", "test7"]]发布于 2015-12-21 21:19:15
我喜欢@JosephYoung的方法,但是如果您想继续使用函数式方法,可以使用reduce。
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的迭代方法会更快一些。
发布于 2015-12-21 21:10:15
它不太实用,但能做好工作
var splitTest = [];
var length = test.length;
for(var i = 0; i < length; i+=4){
splitTest.push(test.slice(i,Math.min(i+4, length)));
}https://stackoverflow.com/questions/34404289
复制相似问题