Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如何检查数组是否包含某个值?_Arrays_Ruby - Fatal编程技术网

Arrays 如何检查数组是否包含某个值?

Arrays 如何检查数组是否包含某个值?,arrays,ruby,Arrays,Ruby,我正在使用以下形式的数组: "car_documents_attributes"=>{ "1562523330183"=>{ "id"=>"", "filename"=>"tyYYqHeqSFOnqLHEz5lO_rc_tispor12756_6wldwu.pdf", "document_type"=>"contract" }, "1562523353208"=>{ "id"=>"", "file

我正在使用以下形式的数组:

"car_documents_attributes"=>{
    "1562523330183"=>{
        "id"=>"", "filename"=>"tyYYqHeqSFOnqLHEz5lO_rc_tispor12756_6wldwu.pdf", "document_type"=>"contract"
    }, 
    "1562523353208"=>{
        "id"=>"", "filename"=>"a9P8TyECRiKbI2YdRVZy_rc_tispor12756_bbtzdz.pdf", "document_type"=>"request"
    },
     "1562523353496"=>{
        "id"=>"", "filename"=>"WCM5FHOfSw6yNSUrfPPm_rc_tispor12756_dqu9r2.pdf", "document_type"=>"notes"
    },
    ...
}
我需要找出此数组中是否有
document\u type
=
contract
(可以没有、一个或多个)

我这样做的方式是逐项循环遍历数组,如果有几十个项,这可能会很慢


有没有更好更快的方法可以简单地检查数组中是否有一个具有
文档类型的项目
=
契约

这是一个包含更多散列的散列。您可以访问
car\u documents\u属性
,迭代这些散列值,并检查是否有
document\u类型
是“合同”:


不知道这是来自params的数据。如果是这样,您确实需要允许接收的内容,或者将参数转换为不安全的散列

此外,在尝试获取
car\u documents\u attributes
时,您可以尝试使用
fetch
而不是
[]
,因为如果该键不在
data
中,它将抛出
nil
,这将抛出一个命名错误:

data.fetch('car_documents_attributes', []).any? { |_, doc| doc['document_type'] == 'contract' }

这是一个包含更多哈希的哈希。您可以访问
car\u documents\u属性
,迭代这些散列值,并检查是否有
document\u类型
是“合同”:


不知道这是来自params的数据。如果是这样,您确实需要允许接收的内容,或者将参数转换为不安全的散列

此外,在尝试获取
car\u documents\u attributes
时,您可以尝试使用
fetch
而不是
[]
,因为如果该键不在
data
中,它将抛出
nil
,这将抛出一个命名错误:

data.fetch('car_documents_attributes', []).any? { |_, doc| doc['document_type'] == 'contract' }

非常感谢。但是,我需要向#添加
,因为代码为#
数据['car\u documents\u attributes']抛出错误
rails undefined method
any'?{…`是的,
ActionController::Parameters
是一个不同的实现,需要将其转换为“不安全”散列以调用某些方法。请参阅编辑。谢谢。但是,我需要将
添加到\u unsafe\u h
,因为代码为#数据抛出错误
rails undefined method
any'['car_documents_attributes'].to_unsafe_h.any?{…`是的,
ActionController::Parameters
是另一个实现,需要转换为“unsafe”散列才能调用某些方法。请参见编辑。示例中没有数组。示例中没有数组。