javascript - 仅使用`.reduce()`在JavaScript中交换数组中的2个元素?
问题描述
我想知道是否只能.reduce
在 JavaScript 中使用交换元素。如果不是,那么函数式编程领域还应该使用什么?
这不适用于对数组进行排序。我想根据这种.reduce
方法找到需要交换步骤的数组元素的所有排列。
解决方案
您可以采用一个函数,该函数采用一个数组和两个索引并使用解构赋值。
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);
推荐阅读
- python - 如何过滤熊猫中的列?
- typescript - 如何使一个类的泛型是必需的?
- javascript - 无法使用 NextJS 9 的 API 路由设置 cookie
- r - 带有 kableExtra 的表标题
- python - Zip 文件夹及其内容
- html - 无法
- python - 我如何形成一个正则表达式,在某些情况下它以 * 开头,而在其他情况下不在 python 中
- c# - 使用 GSMComm 库获取 USSD 结果
- javascript - 为什么 Javascript ES6 不能调用匿名超函数?
- docker - 如何将配置文件推送到新的 oryd/hydra docker 镜像?