首页 > 解决方案 > 在 Ruby 中从 .map 中排除数据

问题描述

我有这个 .map 函数,它返回所有启用的雇主。

 ::Employer.enabled.ordered.map do |e|

我需要过滤掉 == "some text" 的雇主

我试过这个,但它没有给我我正在寻找的结果:

::Employer.enabled.ordered.map do {|e| e.name == "some text" ? nil : [e] }.compact

我是 Ruby 新手,不擅长语法,我缺少什么?

标签: ruby-on-railsruby

解决方案


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


推荐阅读