需要以某种方式匹配与哈希相比的短语并获取id:
哈希:
h = [{'id' => '1', 'words' => 'blue table stand'}, {'id' => '2', 'words' => 'red table stand'}]
词语:
search = 'stand blue'
我想返回那些带有'stand'和'blue'字样的ID,以便我找回id号码1.谢谢。
答案 0 :(得分:2)
我同意@sawa的说法,数据似乎并不是以最舒适的方式形成的,但你永远不知道它来自哪里......
无论如何,这应该有效:
search = "blue stand"
h.select{|x| search.split.all?{|s| x["words"].split.include? s } }.map{|x| x["id"] }
=> ["2"]
从下面的评论中,使用字符串上的[]访问器会缩短它,我讨厌滚动条足以更新它:
h.select{|x| search.split.all?{|s| x["words"][s] } }.map{|x| x["id"] }