ruby-on-rails - 数组在另一个数组中出现了多少次?
问题描述
我是 Ruby on Rails 的新手。这个问题似乎在其他编程语言中得到了回答,但在 RoR 中却没有。
我有一个包含 3 个项目的数组。
array1 = [1, 2, 3]
array1
然后我在另一个数组中有项目,我想检查并查看出现了多少次array2
:
array2 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 10, 11, 2, 12, 3]
答案应该是2。
解决方案
您可以尝试以下方法:
a1.map { |a1i| a2.count(a1i) }.min
这是计算每个项目array1
出现的频率array2
,然后获取最小计数作为没有交集的可能子数组的数量。
我对@Stefan 建议的看法的粗略表示是:
a1.product([0]).to_h.merge(
a2.group_by(&:itself).transform_values(&:size)
).values_at(*a1).min
还有一个更合理的:
count_per_a2i = a2.group_by(&:itself).transform_values(&:size)
a1.map { |a1i| count_per_a2i[a1i] }.min_by(&:to_i)
推荐阅读
- ruby-on-rails - Friendly_id slug_history 正在更新错误的 slug
- raspberry-pi - 更改 Watson IoT 输入节点连接为网关时,Raspberry Pi 上的 Node-RED 不断重启
- r - 将结果作为向量 (r) 存储在 for 循环中
- reactjs - 如何在 React Native 中包装 Flatlist 项目
- r - 在面板数据帧 R 中生成一个虚拟对象
- elasticsearch - 在前端搜索操作时获取数据计数
- mysql - 如何删除 MySQL Query 中未使用的重新编码的行
- flask - Flask Admin:将相关对象的属性添加到模型视图中的列列表
- regex - 逗号分隔列表的正则表达式
- sql - 使用 vb.net 在 sql db 中调用列的最大值