我有这个数组:
>> 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/