欢迎来到cool的博客
7

Music box

Click to Start

点击头像播放音乐
新博客链接

如何调整一个hash里元素的位置。

@users: {"first"=>3, "second"=>25, "teji"=>1, "third"=>13}

把这个hash的  teji 的这个元素放在你第一个。变成

@users: {"teji"=>1, "first"=>3, "second"=>25, "third"=>13}

实现代码如下:

    @users = @users.group("promotions.application_level").count("promotions.application_level")
    Rails.logger.info "== users: #{@users.inspect}"

    #给@users 重新排序 ,国家级(teji)排在最前面
    @users_array = @users.sort
    teji = @users_array[2]
    @users_array.delete(teji)     #删除特级这个元素。
    Rails.logger.info "== users_array: #{@users_array.inspect}"
    @users_array.unshift(teji)    #在数组的开头加入一个元素。
    Rails.logger.info "== users_array2: #{@users_array.inspect}"
    @users = Hash[*@users_array.flatten]  #把一个二维数组变成 hash
    Rails.logger.info "== users: #{@users.inspect}"

对应的log如下:

12:20:56 INFO: == users: {"first"=>3, "second"=>25, "teji"=>1, "third"=>13}
12:20:56 INFO: == users_array: [["first", 3], ["second", 25], ["third", 13]]
12:20:56 INFO: == users_array2: [["teji", 1], ["first", 3], ["second", 25], ["third", 13]]
12:20:56 INFO: == users: {"teji"=>1, "first"=>3, "second"=>25, "third"=>13}
 

返回列表