arrays - ruby 检查数组中的任何项目是否存在于另一个数组中

标签 arrays ruby

目前我有这个代码:

if !(allowed_pa​​rams & password_protected_pa​​rams).empty?

这意味着“如果 allowed_pa​​rams 中的任何内容也在 password_protected_pa​​rams 中”。这段代码可以工作,但我发现它有点困惑,并且对于下一个查看这段代码的开发人员来说不友好。

是否有另一种更易读的方法来检查一个数组中的任何内容是否存在于另一个数组中?

编辑

有问题的 block 是这样的:

if !(allowed_params & password_protected_params).empty?
  result = @user.update_with_password(allowed_params)
else
  #only update trivial attributes
  result = @user.update_without_password(allowed_params)
end

最后我只是添加了一个变量以使其更具可读性(但仍然愿意接受更好的建议):

needs_password = !(allowed_params & password_protected_params).empty?
if needs_password
  result = @user.update_with_password(allowed_params)
else
  #only update trivial attributes
  result = @user.update_without_password(allowed_params)
end

最佳答案

一种 Ruby 方式可能是

foo = [1, 2]
=> [1, 2]
bar = [1, 3]
=> [1, 3]
baz = [5, 3]
=> [5, 3]

bar.any?{|element| foo.include?(element)}
=> true
baz.any?{|element| foo.include?(element)}
=> false

关于arrays - ruby 检查数组中的任何项目是否存在于另一个数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38043796/

相关文章:

c - 按字母顺序打印列表中的某些单词

Java:如何通过给定值获取特定行?(.csv)

java - 检查 java 字符串中的字符数是否正确

ruby - 创建一系列数组元素的所有可能组合的字符串数组

ruby-on-rails - 保存图表失败!验证 Graphviz 是否已安装并位于您的路径中,或使用 filetype=dot

arrays - 如何检查变量是否在 PowerShell 中的数组中?

javascript - innerHTML 修改整个数组

sql - 选择具有不匹配 ID 计数的不同元素

ruby - 在测试之间删除 Cassandra DB (Rspec)

ruby-on-rails - 将 JSON 响应压缩为 zip 并下载当用户在 Rails 中点击 h URL 时