ruby - 检查部分值是否在数组内

标签 ruby

我有这个数组:

>> arr = [["a",1,"b"],["a",2,"b"],["b",3,"d"],["t",6,"a"]]

我想检查 ["a",1] 是否存在于 arr 中,同时忽略 arr 项的第三个值。

有没有更好的方法然后首先从 arr 中的每个项目中删除第三个值:

>> new_arr = [["a",1],["a",2],["b",3],["t",6]]

然后做

>> new_arr.include? ["a",1]
true

类似于:

arr.include? ["a",1,/*/]  #the 3rd value can be anything

谢谢。

最佳答案

您可以尝试以下方法:

arr = [["a",1,"b"],["a",2,"b"],["b",3,"d"],["t",6,"a"]]
arr.any? { |v1, v2, *| [v1, v2] == ["a", 1] }
# => true
arr.any? { |v1, v2, *| [v1, v2] == ["a", 4] }
# => false

包装方法中的逻辑:

def check_subarray(ary, sub_ary)
  ary.any? { |e1, e2, *| [e1, e2] == sub_ary }
end

arr = [["a",1,"b"],["a",2,"b"],["b",3,"d"],["t",6,"a"]]
check_subarray(arr, ["a", 1]) # => true

关于ruby - 检查部分值是否在数组内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25589330/

相关文章:

ruby - 仅在存在时包含 Jekyll 模板

具有多个指向相同值的键的 Ruby 哈希

ruby-on-rails - RSpec : comparing a hash with string keys against a hash with symbol keys?

ruby - 访问 Ruby (1.9) 哈希中的最后一个键值对

ruby - .downto() 方法似乎无法在字符串上调用

ruby-on-rails - 用斜杠将 Ruby 数组拆分为子数组

ruby - Logstash 中的 ruby​​ 过滤器中的舍入 float

ruby - 与缺少库相关的 Gem 安装错误

ruby-on-rails - Sorbet - 无法解析常量

ruby-on-rails - 如何将json数组中的数据保存到数据库MongoDB中?