2017-10-09 81 views
0

我有以下阵列组阵列由偏移

["M", "A", "M", "I", "M", "P"] 

这些代表两个人三个不同的问题的答复。我希望能够将索引[0,3],[1,4]和[2,5]分组。

在这些相同的六个回答可能是三个人回答两个不同问题的情况下。在这种情况下,我希望能够通过索引[0,2,4]和[1,3,5]对它们进行分组。

我在这个项目中使用Underscore,所以一个香草JS或Underscore解决方案将做的伎俩!

+4

你可以发表一些更多的例子,说明输入是什么以及你想要的结果是什么?你有没有尝试过接近? – Phix

+1

所以告诉我们你试过了什么。 Stackoverflow不是免费的代码写入服务。还提供[mcve] – charlietfl

回答

1

您可以使用Array.from()构建阵列和内部需要从两个迭代索引,所以你可以使用i + (n * j)

var arr = ["M", "A", "M", "I", "M", "P"] 
 

 
function group(arr, n) { 
 
    var part = Math.ceil(arr.length/n); 
 
    return Array.from(Array(n), function(e, i) { 
 
    return Array.from(Array(part), function(a, j) { 
 
     return arr[i + (n * j)] 
 
    }) 
 
    }) 
 
} 
 

 
console.log(group(arr, 3)) 
 
console.log(group(arr, 2))

0

使用Array#filter

const array = ["M", "A", "M", "I", "M", "P"]; 
 

 
const group = (arr, n) => [...Array(n)].map(
 
    (_, i) => arr.filter((_, j) => (j - i) % n === 0) 
 
); 
 

 
console.log(group(array, 2)); 
 
console.log(group(array, 3));