我正在尝试以函数式的方式在javascript(es6)中交换数组中的2个元素
let arr = [1,2,3,4,5,6]
let result = swap(arr, 1, 2) // input: array, first element, second element
// result=[1,3,2,4,5,6]
我所能想到的唯一方法是:
const swap = (arr, a, b) =>
arr.map( (curr,i) => i === a ? arr[b] : curr )
.map( (curr,i) => i === b ? arr[a] : curr )
但是这段代码在数组上运行两次,而且不易读懂。有没有一种优雅简洁的函数式代码的建议?
谢谢。
with()
,你可以在一行中完成:arr.with(a, arr[b]).with(b, arr[a])
。看看我的示例答案! - XMehdi01