在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#[]=
并传入start
和length
参数:
元素分配 — 设置索引处的元素,或从起始索引处替换长度元素的子数组,或替换由索引范围指定的子数组。
(强调我的)所以,例如:
@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中的特定索引处合并数组的主要内容,如果未能解决你的问题,请参考以下文章