首页 > 解决方案 > 如何检查数组是否与Ruby中的另一个数组共享元素?

问题描述

我目前正在尝试查看记录数组是否与另一个数组共享元素。

我将 splat 运算符用于这样的条件:

if @user.tags.include?(*current_tags)
    # code
end

这在标签存在时有效,但在标签current_tags为空时返回此错误。

参数数量错误(给定 0,预期为 1)

这在我的应用程序中经常发生,所以我想知道是否有任何替代方法可以实现相同的功能,但如果current_tags是一个空数组,则不会爆炸。

标签: ruby-on-railsruby

解决方案


您可以使用交叉点来解决此问题。两个数组的交集是一个仅包含两者中存在的元素的数组。如果交集为空,则数组没有任何共同点,否则数组具有来自结果的共同元素:

if (current_tags & @user.tags).any?
  # ok
end

推荐阅读