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

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

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

@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]

取决于指定的索引。

【问题讨论】:

  • 你在哪里指定索引?
  • 我没有使用这种方法,因为我不确定如何使用。该方法应在某处指定索引。

标签: arrays ruby


【解决方案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] 而不是仅仅合并它们
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多