Verwenden Sie einfach find
, um die Übereinstimmung zu erhalten, vorausgesetzt, es ist die einzige im Array. Sie können select
verwenden, um mehrere Übereinstimmungen zu erhalten. Danach aktualisieren Sie einfach die Anzahl
Da Ihr Beispiel aus dem Zusammenhang gerissen ist und Fehler enthält, habe ich mir die Freiheit genommen, ein vollständigeres Beispiel zu machen.
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
Ihre Frage wurde nicht richtig beantwortet. Versuchen Sie, Zeichenfolge durch einen anderen Wert zu ersetzen? Benutzer ** gsub ** dafür. – Sivalingam
Nein, der Zählwert muss aktualisiert werden, wenn ich auf eine andere Zeichenfolge mit dem Namen "Hallo" stoße. Also das neue Daten-Array würde gerne data = [: label => "Hallo",: value => 2] –
Vielleicht ist es nur ich, aber ich verstehe nicht, was Sie erreichen wollen. Können Sie bitte eine Beispieleingabe und die erwartete Ausgabe zu Ihrer Frage hinzufügen? – spickermann