You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ruby 如何根据指定索引配对规则交换数组内元素位置

Ruby 按指定索引对两两交换数组元素的实现方案

核心思路是把索引数组拆分为两两一组,依次交换原数组对应位置的元素,Ruby内置的迭代方法可以非常简洁的实现该需求,示例代码如下:

# 输入数据
original_arr = ["A", "B", "C", "D", "E", "F"]
swap_indexes = [4, 2, 0, 3, 1, 5]

# 封装为方法,默认不修改原数组,返回交换后的新数组
def swap_by_index_pairs(arr, swap_indexes)
  # 复制原数组避免修改原始数据
  result = arr.dup
  # 将索引数组按每2个元素为一组拆分,依次执行交换
  swap_indexes.each_slice(2) do |idx1, idx2|
    # 可选:增加索引合法性校验,避免数组越界报错
    next unless idx1 < arr.length && idx2 < arr.length && idx1 >=0 && idx2 >=0
    # Ruby平行赋值直接交换元素,不需要临时变量
    result[idx1], result[idx2] = result[idx2], result[idx1]
  end
  result
end

# 调用测试
p swap_by_index_pairs(original_arr, swap_indexes)
# 输出:["D", "F", "E", "A", "C", "B"]

补充说明

  • 如果你需要直接修改原数组,不需要保留原数据,去掉dup操作直接在原数组上交换即可
  • 当交换索引数组长度为奇数时,最后一个落单的索引会被自动跳过不处理,如有特殊需求可以自行补充边界处理逻辑

内容的提问来源于stack exchange,提问作者Vini Lourenço

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 15:24:03