【问题标题】:Array match and return response数组匹配并返回响应
【发布时间】:2016-12-08 22:31:35
【问题描述】:

我真的被这件事困住了..

我有 RESPONSE 表,其中包含 answerquestion[array] 字段,我想要做的是,如果我要输入“HI”,它将循环遍历问题字段中的所有响应数组,找到匹配项,它应该返回一个答案或id 的响应以获得答案。

#<Response id: 3, answer: "Hi, there!", question: ["hi", "hello", "sup"]>

如果问题匹配,则输出应为id,如果我在数组中键入以下输入之一,则输出应为answer

Response.all.each do |r|
  r.include? "hi"
end

知道怎么做吗?

【问题讨论】:

  • 请提供您拥有的数据示例以及所需的输出(以及您遇到的具体问题)。
  • @Damon:添加示例

标签: arrays ruby match


【解决方案1】:

快到了!这应该有效:

response = Response.find do |r|
  r.question.include? "hi"
end

如果你想要答案:

response.answer

在检查 response 不是 nil 之后。

如果你使用 Ruby 2.3,你可以使用

response&.answer

注意事项:

  • 您使用的是 Rails,对吗?如果您提供更多信息(表结构,数据库 type, ...) 有可能实现更高性能的查询。
  • Ruby 中的惯例是用复数形式命名数组。 question 只是一个问题(字符串),questions 将是一个问题列表(字符串数组)。
  • 最好将所有问题保存为小写:['Hi', 'Hello'].include? 'hi' #=> false

【讨论】:

  • 那么如果我想知道我可以说if r.question.include? "hi" puts r.answer end id 我会得到当前比赛的答案吗?
  • 查看更新。 find 返回找到的第一个块为真的元素。你会在块之后使用response.answer
猜你喜欢
  • 2021-08-12
  • 2020-02-08
  • 2022-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多