在Ruby中的特定索引处合并数组

Posted

技术标签:

【中文标题】在Ruby中的特定索引处合并数组【英文标题】:Merge array at specific index in Ruby 【发布时间】:2018-05-09 07:49:48 【问题描述】:

我需要一个方法,它返回一个从指定索引开始的合并数组。我看过here、here 和here 没有破解它。

我可以看到这是连接的,但我想更新数组而不是简单地组合它们:

@a1 = [0,0,0,0,0]

a2 = [1,1]

def update_array(new_array)
  @a1.push(*new_array)  
end

update_array(a2)

我希望输出类似于:

#[0,1,1,0,0] or [0,0,0,1,1]

取决于指定的索引。

【问题讨论】:

你在哪里指定索引? 我没有使用这种方法,因为我不确定如何使用。该方法应在某处指定索引。 【参考方案1】:

您可以使用普通的元素赋值,Array#[]= 并传入startlength 参数:

元素分配 — 设置索引处的元素,或从起始索引处替换长度元素的子数组,或替换由索引范围指定的子数组。

(强调我的)所以,例如:

@a1 = [0,0,0,0,0]
a2 = [1,1]
@a1[1, a2.length] = a2
@a1 # => [0, 1, 1, 0, 0]
@a1 = [0,0,0,0,0]
@a1[@a1.length - a2.length, a2.length] = a2
@a1 # => [0, 0, 0, 1, 1]

【讨论】:

【参考方案2】:

数组有一个方法可以做到这一点:insert

a1 = [0,0,0,0,0]
a2 = [1,1]

a1.insert(1, *a2) # => [0, 1, 1, 0, 0, 0, 0]

【讨论】:

我需要更新每个数组元素#=> [0, 1, 1, 0, 0] 而不是仅仅合并它们

以上是关于在Ruby中的特定索引处合并数组的主要内容,如果未能解决你的问题,请参考以下文章

在特定索引处更改 React 状态数组

合并或合并索引不相等的两个或三个(多于三个)数组

合并两个表并将它们的数据显示在一个数组中

合并两个多维数组并重新索引所有子数组

需要在特定索引处重叠数组的子数组

如何在 char 数组的特定索引处获取实际值