我有這個 .map 函式,它回傳所有啟用的雇主。
::Employer.enabled.ordered.map do |e|
我需要過濾掉那些==“一些文字”的雇主
我試過這個,但它沒有給我我正在尋找的結果:
::Employer.enabled.ordered.map do {|e| e.name == "some text" ? nil : [e] }.compact
我是 Ruby 新手,不擅長語法,我錯過了什么?
uj5u.com熱心網友回復:
Ruby有對于這種情況一個很好的可列舉方法:reject。
::Employer.enabled.ordered.reject { |e| e.name == "unwanted-name" }
uj5u.com熱心網友回復:
ruby 中有一個可用的select 方法
a = [:foo, 'bar', 2, :bam]
a1 = a.select {|element| element.to_s.start_with?('b') }
a1 # => ["bar", :bam]
對于您的特定用例(僅保留e不等于的專案some text):
::Employer.enabled.ordered.select do {|e| e.name != "some text" }
其他選項是select!,reject!或reject。它們中的每一個都有不同的行為,但它們的使用是為了filter.
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/358260.html
