我正在学习使用JavaScript进行函数式编程,但是我在处理值排列时遇到了一些问题。
实际上,我有一个类似于以下的数组:
[2, 1]
我需要获取功能性的内容,且不会进行任何修改:
[1, 2]
我写了一个使用一些ES6功能的排列函数来完成这项工作:
export function permute (arr, indiceX, indiceY) {
const intermediateArray = [
...arr.slice(0, indiceX),
arr[indiceY],
...arr.slice(indiceX + 1)
]
console.log([
...intermediateArray.slice(0, indiceY),
intermediateArray[indiceX],
...intermediateArray.slice(indiceY + 1)
]) // prints [1, 1]
return [
...intermediateArray.slice(0, indiceY),
intermediateArray[indiceX],
...intermediateArray.slice(indiceY + 1)
]
}
使用这个函数,我总是得到
[1, 1]
我不明白为什么,因为我首先在indiceX的位置添加了indiceY值,然后做了同样的事情但是针对另一个值。
你有任何想法我做错了什么吗?
编辑:一些细节,它应该交换长度为N的数组中的两个项目,例如:
permute([1, 3, 2, 6], 0,2) // should return [2, 3, 1, 6]
编辑 2 :我已在我的github账户上发布了解决方案
[...data].reverse()
更好。 - dfsq