Rails:基于其他数组对数组进行排序

时间:2019-07-14 13:25:07

标签: ruby-on-rails arrays ruby rubygems ruby-on-rails-5

我想基于另一个数组在 Ruby on Rails 中对数组进行排序,但仍然希望在结果中保留第一个数组值:-

all_countries = ["Afghanistan", "Aland Islands", "Albania", "Algeria", "American Samoa", "Andorra", "Angola", "Anguilla", "Antarctica", "Argentina", "Armenia", "Armenien", "Australia", ....,]


gcc = ["UAE", "Saudi Arabia", "Qatar", "Bahrain", "Kuwait", "Oman"] 

所需的输出

我想对所有国家/地区进行排序,但希望首先显示GCC国家(无排序-任何顺序),其余国家/地区应按排序(A-Z)出现。

["UAE", "Saudi Arabia", "Qatar", "Bahrain", "Kuwait", "Oman", "Afghanistan", "Aland Islands", "Albania", "Algeria", "American Samoa" .....]

我可以按照以下方式进行操作,但是对于非海湾合作委员会国家来说,它似乎不是很好的代码,并且破坏了字母排序。

 countries.sort_by{|x| gcc.index(x) || gcc.size }

还有更好的方法吗?

1 个答案:

答案 0 :(得分:3)

gcc + (all_countries - gcc).sort