如何在JavaScript中将数组拆分为数组对?

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)

  • 或者你可以使用展开运算符,几乎是一个行:D ```array.reduce((result, value, index, sourceArray) => index % 2 === 0 ? [...result, sourceArray.slice (索引, 索引 + 2)] : 结果, [])``` (3认同)

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)


小智 12

Lodash为此提供了一种方法:https ://lodash.com/docs/4.17.10#chunk

_.chunk([2,3,4,5,6,4,3,5,5], 2); // => [[2,3],[4,5],[6,4],[3,5],[5]]


Mat*_*cey 7

还有一个是已经发布的答案的一些混合物.添加它因为阅读了答案后我仍觉得事情可能更容易阅读:

var groups = [];

for(var i = 0; i < arr.length; i += 2)
{
    groups.push(arr.slice(i, i + 2));
}
Run Code Online (Sandbox Code Playgroud)