将数组部分映射到新数组

时间:2015-12-21 21:03:32

标签: javascript arrays functional-programming

我正在尝试取一个数组并将其拆分为长度为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"]]

2 个答案:

答案 0 :(得分:7)

它不是那么有用,但能完成工作

 <!-- ANDROID PERMISSIONS -->
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

答案 1 :(得分:3)

我喜欢@ 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;
}, []);
但是,约瑟夫的迭代方法会更快。