首页 > 解决方案 > 仅使用`.reduce()`在JavaScript中交换数组中的2个元素?

问题描述

我想知道是否只能.reduce在 JavaScript 中使用交换元素。如果不是,那么函数式编程领域还应该使用什么?

这不适用于对数组进行排序。我想根据这种.reduce方法找到需要交换步骤的数组元素的所有排列。

标签: javascriptfunctional-programmingreduce

解决方案


您可以采用一个函数,该函数采用一个数组和两个索引并使用解构赋值

const swap = (array, i, j) => [array[i], array[j]] = [array[j], array[i]];

var array = [1, 2, 3];

swap(array, 0, 1)
console.log(array);

通过采用索引数组并从头到尾交换所有对来减少的版本。

const
    swap = (array, ...indices) => 
        indices.reduce((a, b) => ([array[a], array[b]] = [array[b], array[a]], b));

var array = [1, 2, 3];

swap(array, 0, 1)
console.log(array);


推荐阅读