Ruby数组返回用于Chartjs的查询


def self.return_this_data_for_map_method
    data = { :labels => [], datasets: [data: []] }
    dictionary = {}
    results.each do |teams|
        team = teams[0]
        teamMembers = teams[1]
        if dictionary[team].nil?
            dictionary[team] = teamMembers
        else 
            dictionary[team] += teamMembers
        end
    end
    data[:labels] << dictionary.keys
    data[:datasets][0][:data] << dictionary.values
    data
end

这是我出门的数据

 => {:labels=>[["CUBS", "CARDS", "ROCKIES", "ASTROS"]]:datasets=>[{:data=>[[72, 93, 74, 28]]}]}

这就是我尝试获取数据的方式

=> {:labels=>["CUBS", "CARDS", "ROCKIES", "ASTROS"], :datasets=>[{:data=>[72, 93, 74, 28]}]}

它就像它仍然在一系列数组中一样包裹它,我并没有看到如何打破它。关于我如何修复我的代码的任何建议将不胜感激。

使用Ruby 2.3.1

最简单的解决方案是在返回数据之前将数组弄平:

data = { :labels => [], datasets: [data: []] }
dictionary = {}
results.each do |teams|
    team = teams[0]
    teamMembers = teams[1]
    if dictionary[team].nil?
        dictionary[team] = teamMembers
    else 
        dictionary[team] += teamMembers
    end
end
data[:labels] << dictionary.keys
data[:datasets][0][:data] << dictionary.values
data[:labels].flatten!
data[:datasets][0][:data].flatten!
data

@maxpleaner和@rails_id是正确的

def self.return_this_data_for_map_method
data = { :labels => [], datasets: [data: []] }
dictionary = {}
results.each do |teams|
    team = teams[0]
    teamMembers = teams[1]
    if dictionary[team].nil?
        dictionary[team] = teamMembers
    else 
        dictionary[team] += teamMembers
    end
end
data[:labels] += dictionary.keys
data[:datasets][0][:data] += dictionary.values
data

结束

最新更新