Tor*_*ith 28 javascript arrays
我想将数组拆分成数组对
所以 var arr=[2,3,4,5,6,4,3,5,5]
将会 newarr =[[2,3],[4,5],[6,4],[3,5],[5]]
Vby*_*yec 38
你可以使用js reduce
initialArray.reduce(function(result, value, index, array) {
if (index % 2 === 0)
result.push(array.slice(index, index + 2));
return result;
}, []);
Run Code Online (Sandbox Code Playgroud)
Sim*_*han 15
现在有灵活的Array#flatMap(value, index, array):
const pairs = arr.flatMap((_, i, a) => i % 2 ? [] : [a.slice(i, i + 2)]);
Run Code Online (Sandbox Code Playgroud)
可能更高效,但看起来很傻Array.from(source, mapfn?):
const pairs = Array.from({ length: arr.length / 2 }, (_, i) => arr.slice(i * 2, i * 2 + 2))
Run Code Online (Sandbox Code Playgroud)
Cha*_*adF 13
这没有预先烘焙的功能,但这是一个简单的解决方案:
var splitPairs = function(arr) {
var pairs = [];
for (var i=0 ; i<arr.length ; i+=2) {
if (arr[i+1] !== undefined) {
pairs.push ([arr[i], arr[i+1]]);
} else {
pairs.push ([arr[i]]);
}
}
return pairs;
};
Run Code Online (Sandbox Code Playgroud)
还有一个是已经发布的答案的一些混合物.添加它因为阅读了答案后我仍觉得事情可能更容易阅读:
var groups = [];
for(var i = 0; i < arr.length; i += 2)
{
groups.push(arr.slice(i, i + 2));
}
Run Code Online (Sandbox Code Playgroud)