如何转换数组,例如:
[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:我的问题是,我尝试过的所有内容都给出了二维、三维和四维数组的每种排列,但我只想要上面的示例。比方说,连续值的排列。
最佳答案
我相信这就是您正在寻找的:
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))
关于JavaScript 获取连续值对的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71422079/