基于符号Ruby更新数组

时间:2016-11-13 07:41:08

标签: ruby symbols ruby-2.1

如何根据符号更新数组?喜欢

data = []
string = "Hello"
if( !data.include? string )
   count += 1
   data.insert(-1, {
       label: string,
       value: count,
   })
else
  #logic to change count value if string is encountered again
end

我正在考虑找到字符串所在的索引,然后删除它以在该索引处插入另一个更新的值。这是正确的做法吗?

1 个答案:

答案 0 :(得分:1)

只需使用find来获取匹配项,只要它是数组中唯一的匹配项即可。您可以使用select来获得多个匹配项。之后只需更新计数

由于你的例子脱离了上下文并且包含错​​误,我已经冒昧地做了一个更完整的例子。

data    = []
strings = ["Hello", "Bye", "Hello", "Hi"]

strings.each do |string|
  hash = data.find{ |h| h[:label] == string }
  if hash.nil?
    data << {label: string, value: 1}
  else 
    hash[:value] += 1
  end
end