2017-05-23 2 views
-5

Ich habe ein Array von Arrays wie dieseArrays von Arrays mit unterschiedlichen Attributen

array = [[Sat, 01 Jul 2017, 2.0], 
     [Sat, 01 Jul 2017, 2.0], 
     [Wed, 05 Jul 2017, 2.0], 
     [Thu, 06 Jul 2017, 2.0], 
     [Thu, 06 Jul 2017, 18.0], 
     [Fri, 07 Jul 2017, 2.0], 
     [Wed, 12 Jul 2017, 2.0], 
     [Thu, 13 Jul 2017, 2.0], 
     [Fri, 14 Jul 2017, 2.0], 
     [Wed, 19 Jul 2017, 2.0], 
     [Thu, 20 Jul 2017, 2.0], 
     [Fri, 21 Jul 2017, 2.0], 
     [Wed, 26 Jul 2017, 2.0], 
     [Thu, 27 Jul 2017, 2.0], 
     [Fri, 28 Jul 2017, 2.0]] 

ich dieses Array wie folgt

array = [[Sat, 01 Jul 2017, 4.0], 
     [Wed, 05 Jul 2017, 2.0], 
     [Thu, 06 Jul 2017, 20.0], 
     [Fri, 07 Jul 2017, 2.0], 
     [Wed, 12 Jul 2017, 2.0], 
     [Thu, 13 Jul 2017, 2.0], 
     [Fri, 14 Jul 2017, 2.0], 
     [Wed, 19 Jul 2017, 2.0], 
     [Thu, 20 Jul 2017, 2.0], 
     [Fri, 21 Jul 2017, 2.0], 
     [Wed, 26 Jul 2017, 2.0], 
     [Thu, 27 Jul 2017, 2.0], 
     [Fri, 28 Jul 2017, 2.0]] 
+1

Nicht sicher, was zu tun ist. Möchten Sie Array nach Datum sortieren? – MaxZoom

+1

... und was hast du bisher versucht? –

+1

Ist 'Sat, 01 Jul 2017' ein Datumsobjekt oder ein String? Wenn Letzteres bitte Zitate hinzufügt. Ich nehme an, Sie möchten Duplikate für jeden Tag entfernen, aber was auch immer Ihr Ziel ist, sollten Sie es angeben, anstatt nur ein Beispiel zu verwenden, um zu versuchen, es abzuleiten. –

Antwort

3
array.group_by(&:first).map do |k, v| 
    [k, v.reduce(0) { |memo, (_, v)| memo + v }] 
end 

oder

array.map(&:dup) 
    .group_by(&:shift) 
    .map { |k, v| [k, v.flatten.reduce(&:+)] } 

konvertieren möchten oder

array.each_with_object(Hash.new(0)) do |(k, v), acc| 
    acc[k] += v 
end.to_a 
+0

Da das Array nach Datum sortiert angezeigt wird, ist "chunk" oder "slice_when" möglicherweise aussagekräftiger als "group_by". –

+0

Vielen Dank @mudasobwa – djrock

Verwandte Themen