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
相关产品推荐
相关产品推荐

