代码之家  ›  专栏  ›  技术社区  ›  Harish Shetty

根据匹配条件替换数组元素的优雅方法是什么?

  •  3
  • Harish Shetty  · 技术社区  · 14 年前

    def update_orders_list(order)
      @orders.delete_if{|o| o.id == order.id}
      @orders << order
    end
    

    理想情况下,我更喜欢这些方法:

    array.find_and_replace(obj) { |o| conditon }
    

    idx = array.find_index_of { |o| condition }
    array[idx] = obj
    

    有更好的办法吗?

    2 回复  |  直到 14 年前
        1
  •  5
  •   Josh    8 年前

    从1.8.7开始, Array#index 接受块。所以你的最后一个例子只要稍加调整就可以了。

    idx = array.index { |o| condition }
    array[idx] = obj
    
        2
  •  5
  •   Alex Wayne    14 年前
    array.map { |o| if condition(o) then obj else o }
    

    也许 吧?