13

RailsでArray.someと同等のことをしたいと思います。

これは、私のユースケースに適用された例です。これは、より複雑include?です(これを適用したい*args):

ary = [:a, :b, :c, d: :x, e: :y] # => [:a, :b, :c, { :d => :x, :e => :y }]
search = :e
contained = ary.some { |x|
  x == search || x.try(:key?, search)
} # => true
assert contained, "We should have found #{search}"

これはで行うことができますary.mapが、それは配列全体を調べてから、その内容を再度テストすることを意味します。空の配列が返されるかどうかを使用ary.drop_whileして確認することもできますが、結果をテストする必要があります。私も見ましary.bsearchたが、要素の順序についてはよくわからない奇妙な制限がいくつかあります。

私は何かを逃したことがありますか?それを行う簡単な方法はありませんか?私はruby2とrails4(エッジ)を使用しています。

4

2 に答える 2

27

JavascriptArray.prototype.someはRubyEnumerable #anyですか?

["1", "2", "3"].any? { |x| x.to_i == 2 } #=> true
于 2013-03-26T16:49:34.697 に答える
1

あなたが本当に探しているなら、あなたはsome?このようなものが欲しいかもしれません

module Enumerable
  def some?
    self.any? && !self.all?
  end
end

これtrueにより、すべてではなく一部の要素が設定されている場合にのみ表示されます。

ここでスニペットをチェックしてくださいhttps://coderwall.com/p/wcgj2w

于 2013-11-20T17:33:10.527 に答える