JavaScript 获取成对连续值的数组

JavaScript get array of pairs of consecutive values

我怎样才能转换这样的数组:

[2, 5, 4, 0]

进入一对数组,但没有得到每一对。例如,从上面给出的数组中,我想要以下数组:

[[2, 5],[5, 4], [4, 0], [0, 2].

此外,是否可以有另一个函数返回一个数组,如:[[2,5,4],[5,4,0],[4,0,2],[0,2,5]]?

还有另一个回馈:[[2,5,4,0],[5,4,0,2],[4,0,2,5],[0,2,5,4]]?

编辑:我尝试了以下返回数组中所有可能对的方法,但这不是我要找的:

let result = pieces[0].reduce( (acc, v, i) =>
    acc.concat(pieces[0].slice(i+1).map( w => [v, w] )),
[]);

这将显示:[ [ 2, 5 ], [ 2, 4 ], [ 2, 0 ], [ 5, 4 ], [ 5, 0 ], [ 4, 0 ] ]

Edit2:我的问题是,我尝试过的所有操作都给出了二维、三维和四维数组的每个排列,但我只想要上面的例子。比方说,连续值的排列。

这是一种方法:

const input = [2, 5, 4, 0];

const output = [];

for(let i=0; i<input.length - 1; i++) {
    output.push([input[i], input[i+1]]);
}
output.push([input[input.length-1], input[0]]);

console.log(output);

我相信这就是您要找的:

let arr = [2, 5, 4, 0]
function getPermutation(chunk){
    let result = arr.reduce((acc,e,i) => {
        if(i + chunk <= arr.length)
            acc.push(arr.slice(i,i+chunk))
        else
            acc.push(arr.slice(i,i+chunk).concat(arr.slice(0,(i+chunk) % arr.length)))
        return acc;
    },[])
    return result 
}

console.log(getPermutation(2))
console.log(getPermutation(3))
console.log(getPermutation(4))