ruby-on-rails - 2个大小写不同的字符串数组的交集

标签 ruby-on-rails arrays ruby

我想得到 2 个字符串数组的交集。第一个数组有不同的大小写。我想要的结果数组应该尊重第一个数组外壳,但是 2 之间的比较应该忽略大写/小写。例如

letters = ['Aaa', 'BbB', 'CCC']

permitted = ['aaa', 'bbb']

结果应该是:

['Aaa', 'BbB']

我在做:

letters.map(&:downcase) & permitted.map(&:downcase)

但这会返回 ['aaa', 'bbb']

执行此操作的巧妙方法是什么?更长的方法是:

letters.each { |letter|
    if permitted.include?(letter.downcase)
        accepted.push(letter)
    end
}

但是有更短/更简洁的方法吗?

最佳答案

您可以使用选择:

search = permitted.map(&:downcase)
letters.select{|letter|
  search.include?(letter.downcase)
}

甚至更整洁(恕我直言):

-> search { 
  letters.select{|x| search.include?(x.downcase)}
}.call(permitted.map(&:downcase))

Demonstration

关于ruby-on-rails - 2个大小写不同的字符串数组的交集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38265256/

相关文章:

javascript - Rails 3. 链接到 javascript 文件中的图像在生产中不起作用

javascript - 如何使用 Angular4 和 Rails API 下载 Excel 文件?

arrays - 访问和搜索有什么区别? (确定数组的时间复杂度时)

java - 动态数组和列表

ruby-on-rails - Rails 中类的初始化方法在哪里?

mysql - 在 Rails 5/mysql 中制定左连接查询时出现的问题

ruby-on-rails - M.Hartl 的 Ruby on Rails 教程(第 3 版)第 10 章 (10.54) 中的密码重置测试失败

javascript - jquery 将两个数组(键,值)关联成一个数组

ruby-on-rails - Rails 在模型中设置默认 boolean 值

ruby - 创建一个 Gem,向核心类添加方法