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

时间:2019-07-07 19:11:05

标签: arrays ruby

我正在使用这种形式的数组:

class Portfolio extends Model
{
    public function transaction()
    {
        return $this->hasMany('App\Transaction', 'id_portfolio', 'id_portfolio');
    }

    public function user()
    {
        return $this->belongsTo('App\User', 'id_user', 'id');
    }
}

我需要找出此数组中是否有"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_type(可以是一个,一个或多个)的项目。

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

是否有更好,更快的方法来简单地检查数组中是否为contract = document_type的项?

1 个答案:

答案 0 :(得分:2)

这是包含更多哈希的哈希。您可以做的是访问aws amplify,迭代这些哈希值,并检查是否有任何car_documents_attributes是“ contract”:

document_type

不知道数据来自参数。如果是这样,您确实需要允许接收到什么,或者将参数转换为不安全的哈希。

此外,在尝试获取data = { "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" } } } p data['car_documents_attributes'].any? { |_, doc| doc['document_type'] == 'contract' } # true 时,您可以尝试使用fetch而不是[],因为如果该密钥不在car_documents_attributes中,它将抛出{{ 1}},这将引发NoMethodError:

data