【问题标题】:Return even if searched result partially matches the array of hash in ruby即使搜索结果部分匹配 ruby​​ 中的哈希数组也返回
【发布时间】:2015-07-20 07:36:04
【问题描述】:

我有以下内容

 @name  = ["document1", "Public", "Folder11", "Folder22", "Folder33"]

如果我这样做了

@name.select { |str| str.include?(@searched) } 

它将返回那些在数组中部分匹配的值 例如,如果我这样做 @name.include?("Folder") 它会给我:

["Folder11", "Folder22", "Folder 33"]

现在我的哈希数组中有以下内容@combined_array:

 [{:id=>"folder.cecb8eb83d90dbeb.CECB8EB83D90DBEB!107", :name=>"Folder 11", :type=>"folder"}, {:id=>"folder.cecb8eb83d90dbeb.CECB8EB83D90DBEB!105", :name=>"Pictures", :type=>"album"}, {:id=>"folder.cecb8eb83d90dbeb.CECB8EB83D90DBEB!113", :name=>"Public", :type=>"folder"}, {:id=>"folder.cecb8eb83d90dbeb.CECB8EB83D90DBEB!124", :name=>"sasd", :type=>"folder"}, {:id=>"folder.cecb8eb83d90dbeb.CECB8EB83D90DBEB!108", :name=>"Folder12", :type=>"folder"}, {:id=>"folder.cecb8eb83d90dbeb.CECB8EB83D90DBEB!119", :name=>"Folder12", :type=>"folder"}, {:id=>"folder.cecb8eb83d90dbeb.CECB8EB83D90DBEB!115", :name=>"Folder13", :type=>"folder"}, {:id=>"file.cecb8eb83d90dbeb.CECB8EB83D90DBEB!121", :name=>"Document2.docx", :type=>"file"}, {:id=>"file.cecb8eb83d90dbeb.CECB8EB83D90DBEB!125", :name=>"sss.docx", :type=>"file"}]

我想得到与上面相同的结果,但这次使用的是哈希数组。

【问题讨论】:

    标签: ruby ruby-on-rails-4


    【解决方案1】:
    @combined_array =  [{:id=>"folder.cecb8eb83d90dbeb.CECB8EB83D90DBEB!107", :name=>"Folder 11", :type=>"folder"}, {:id=>"folder.cecb8eb83d90dbeb.CECB8EB83D90DBEB!105", :name=>"Pictures", :type=>"album"}, {:id=>"folder.cecb8eb83d90dbeb.CECB8EB83D90DBEB!113", :name=>"Public", :type=>"folder"}, {:id=>"folder.cecb8eb83d90dbeb.CECB8EB83D90DBEB!124", :name=>"sasd", :type=>"folder"}, {:id=>"folder.cecb8eb83d90dbeb.CECB8EB83D90DBEB!108", :name=>"Folder12", :type=>"folder"}, {:id=>"folder.cecb8eb83d90dbeb.CECB8EB83D90DBEB!119", :name=>"Folder12", :type=>"folder"}, {:id=>"folder.cecb8eb83d90dbeb.CECB8EB83D90DBEB!115", :name=>"Folder13", :type=>"folder"}, {:id=>"file.cecb8eb83d90dbeb.CECB8EB83D90DBEB!121", :name=>"Document2.docx", :type=>"file"}, {:id=>"file.cecb8eb83d90dbeb.CECB8EB83D90DBEB!125", :name=>"sss.docx", :type=>"file"}]
    @combined_array.select { |item| item[:name].include?("Folder") }
    => [{:id=>"folder.cecb8eb83d90dbeb.CECB8EB83D90DBEB!107", :name=>"Folder 11", :type=>"folder"}, {:id=>"folder.cecb8eb83d90dbeb.CECB8EB83D90DBEB!108", :name=>"Folder12", :type=>"folder"}, {:id=>"folder.cecb8eb83d90dbeb.CECB8EB83D90DBEB!119", :name=>"Folder12", :type=>"folder"}, {:id=>"folder.cecb8eb83d90dbeb.CECB8EB83D90DBEB!115", :name=>"Folder13", :type=>"folder"}] 
    

    所以不要在字符串中查找

    |str| str.include?(@searched)
    

    您应该查看一个项目(或哈希),即item[:name] 是要搜索的字符串

    |item| item[:name].include?(@searched)
    

    【讨论】:

    • 我无法得到任何结果。 [29]pry(#>)> @searched => "fol" [30] pry(#>)> a => [{:id=>"文件夹。 cecb8eb83d90dbeb.CECB8EB83D90DBEB!107", :name=>"Folder 11", :type=>"folder"}, {:id=>"folder.cecb8eb83d90dbeb.CECB8EB83D90DBEB!105", :name=>"图片", :type =>"专辑"}, {:id=>"folder.cecb8eb83d90dbeb.CECB8EB83D90DBEB!115", :name=>"Folder13", :type=>"folder"}, {:id=>"file.cecb8eb83d90dbeb.CECB8EB83D90DBEB !121", :name=>"Document2.docx", :type=>"file"}, [31] pry(#>)> a.select { |item| item[:name].include?(@searched) }
    • 我想我需要小写名字
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-02
    • 2019-10-20
    • 2015-01-19
    相关资源
    最近更新 更多