ruby-on-rails - 如何检查数组是否与Ruby中的另一个数组共享元素?
问题描述
我目前正在尝试查看记录数组是否与另一个数组共享元素。
我将 splat 运算符用于这样的条件:
if @user.tags.include?(*current_tags)
# code
end
这在标签存在时有效,但在标签current_tags
为空时返回此错误。
参数数量错误(给定 0,预期为 1)
这在我的应用程序中经常发生,所以我想知道是否有任何替代方法可以实现相同的功能,但如果current_tags
是一个空数组,则不会爆炸。
解决方案
您可以使用交叉点来解决此问题。两个数组的交集是一个仅包含两者中存在的元素的数组。如果交集为空,则数组没有任何共同点,否则数组具有来自结果的共同元素:
if (current_tags & @user.tags).any?
# ok
end
推荐阅读
- c - 位与运算符不适用于十六进制输入
- sql - 从 Servlet 中的数据库返回列表
- r - 使用两种方法实现 AdStock 变换:权重函数的几何衰减和延迟衰减
- verilog - Warning:Instantiation depth... This might indicate a recursive instantiation
- python - 如何查找句子中是否提到了主题?-nlp
- terraform - 读取包含 Terraform 中变量的外部文件
- mysql - 如何检查 JSON 数组值是否包含数字列表和返回长度
- arrays - 从一列值构建一个数组
- apache-spark - Pyspark - AWS EMR:作业因阶段失败而中止:ShuffleMapStage - 无法连接到 ip-XXX-XX-XX-XX.ec2.internal/XXX.XX.XX.XX:XXXXX
- c - 如何在 2 个不同的函数中使用 fopen()